#vba #excel #vbscript
#vba #excel #vbscript
Вопрос:
У меня есть скрипт, который открывает файл Excel и запускает макрос, затем завершает работу с файлом. Поскольку файл находится в режиме только для чтения, и скрипт вносит временные изменения в файл, при вызове скрипта myExcelWorker.Quit()
excel спрашивает, хочу ли я сохранить свои изменения, и я должен нажать «нет». Есть ли какой-либо способ выйти из программы и пропустить это поле?
' Create a WshShell to get the current directory
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
' Create an Excel instance
Dim myExcelWorker
Set myExcelWorker = CreateObject("Excel.Application")
myExcelWorker.Visible = True
' Tell Excel what the current working directory is
' (otherwise it can't find the files)
Dim strSaveDefaultPath
Dim strPath
strSaveDefaultPath = myExcelWorker.DefaultFilePath
strPath = WshShell.CurrentDirectory
myExcelWorker.DefaultFilePath = strPath
' Open the Workbook specified on the command-line
Dim oWorkBook
Dim strWorkerWB
strWorkerWB = strPath amp; "BugHistogram_v2.xlsm"
Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)
' Build the macro name with the full path to the workbook
Dim strMacroName
strMacroName = "CreateImagesButton_Click"
on error resume next
' Run the calculation macro
myExcelWorker.Run strMacroName
if err.number <> 0 Then
' Error occurred - just close it down.
End If
err.clear
on error goto 0
' oWorkBook.Save ' this is ignored because it's read only
myExcelWorker.DefaultFilePath = strSaveDefaultPath
' Clean up and shut down
Set oWorkBook = Nothing
' Don’t Quit() Excel if there are other Excel instances
' running, Quit() will
' shut those down also
if myExcelWorker.Workbooks.Count = 0 Then
myExcelWorker.Quit
End If
myExcelWorker.Quit()
Set myExcelWorker = Nothing
Set WshShell = Nothing
Ответ №1:
ActiveWorkbook.Close False
(чтобы закрыть книгу)
Application.Quit
(для выхода из Excel — не запрашивает сохранение изменений)
Из службы поддержки Microsoft Как отключить запрос «Сохранить изменения» при закрытии книги в Excel:
Чтобы принудительно закрыть книгу без сохранения каких-либо изменений, введите следующий код в модуле Visual Basic этой книги:
Sub Auto_Close() ThisWorkbook.Saved = True End Sub
Поскольку для свойства Saved установлено значение True, Excel отвечает так, как если бы книга уже была сохранена и никаких изменений не было
произошло с момента последнего сохранения.Свойство DisplayAlerts программы может использоваться для той же цели. Например, следующий макрос отключает DisplayAlerts, закрывает активную книгу без сохранения изменений, а затем снова включает DisplayAlerts.
Sub CloseBook() Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub
Вы также можете использовать аргумент SaveChanges метода Close.
Следующий макрос закрывает книгу без сохранения изменений:
Sub CloseBook2() ActiveWorkbook.Close savechanges:=False End Sub
Комментарии:
1. Спасибо! Я использовал метод CloseBook ().
Ответ №2:
Приведенный выше ответ предназначен для VBA
— вы можете решить это в своем VBS
напрямую, используя
oWorkBook.Close False
Set oWorkBook = Nothing
вместо
Set oWorkBook = Nothing