【发布时间】:2015-04-05 15:49:06
【问题描述】:
我有一个简单的程序,它可以将数据连同时间戳一起扫描到电子表格中,然后您可以通过保存来更新数据,或者退出并退出并保存。
我被困一天左右的唯一问题是解决电子表格已打开的情况下的错误处理。我想拥有这样的东西;
if file is open THEn msgbox("File is open, close file and start again") WScript.退出
Option Explicit
DIM oFs: Set oFs = CreateObject("Scripting.FileSystemObject")
DIM objExcel, strExcelPath, objSheet
DIM ib
DIM msg1
DIM msg2
strExcelPath = "c:\temp\Example.xls"
Set objExcel = CreateObject("Excel.Application")
objExcel.WorkBooks.Open strExcelPath
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
DO
ib=inputbox("SCAN NAME, SCAN LOTS"&vbCrLf&"TO UPDATE,SCAN ""UPDATE."""&vbCrLf&"TO EXIT, SCAN ""QUIT.""","Picklot Passout Database")
IF ib="" THEN
msg1=MsgBox("You must scan either a NAME or LOT NUMBER."&vbCrLf&"If you want to exit, scan QUIT."&vbCrLf&"Click OK to continue.",vbokonly,"Cannot Insert Blank Data")
ELSEIF ib= "QUIT" OR ib= "quit" THEN
objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
set objExcel = Nothing
Set oFs = Nothing
ELSEIF ib="update" OR ib="UPDATE" THEN
objExcel.ActiveWorkbook.Save
msg2=MsgBox("Update Complete.",vbokonly,"Database Updated")
ELSE
objSheet.Range("A2").EntireRow.Insert
objSheet.Cells(2, 1).Value = ib
objSheet.Cells(2, 2).Value=(now)
END IF
LOOP WHILE NOT ib="quit" AND NOT ib="QUIT"
【问题讨论】:
-
您是否收到错误消息?在
objExcel.WorkBooks.Open strExcelPath线上?另一条线?请edit您的问题并粘贴该信息。 -
否,但是如果excel文件被其他用户或同一台PC打开,它会要求保存或覆盖数据,无论点击什么,它仍然不保存。该脚本仅在未查看 excel 文件时有效,因此我试图找出一种方法让我知道它是否已打开并关闭它。