У меня есть простая программа, чем сканирование данных в электронную таблицу вместе с меткой времени, тогда вы можете либо обновить данные, либо сохранить, либо выйти, и выйти и сохранить.VBS Если файл открыт
Единственная проблема, с которой я столкнулся в течение дня или около того, - это обойти обработку ошибок в случае, когда электронная таблица уже открыта. Id нравится иметь что-то подобное;
если файл открыт Then MsgBox («Файл открыт, закрыть файл и начать заново») WScript.Quit
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'? Еще одна строка? Пожалуйста, отредактируйте свой вопрос и вставьте эту информацию. – JosefZ
Нет, но если файл excel открыт другим пользователем или на том же ПК, он просит сохранить или перезаписать данные, указать, что щелкнуло, оно по-прежнему не сохраняется. Сценарий работает только тогда, когда файл excel не просматривается, поэтому я пытался выяснить способ открытия и закрытия. –