2014-07-03 15 views
6

Ich habe ein Skript, das eine Excel-Datei öffnet und ein Makro ausführt, beendet dann die Datei. Da sich die Datei im schreibgeschützten Modus befindet und das Skript temporäre Änderungen an der Datei vornimmt, fragt Excel beim Aufruf des Skripts myExcelWorker.Quit() ab, ob ich meine Änderungen speichern möchte, und ich muss auf "Nein" klicken. Gibt es eine Möglichkeit, das Programm zu verlassen und diese Box zu überspringen?Ignorieren Sie "Möchten Sie speichern" -Box beim Beenden von 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 & "\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 

Antwort

7

ActiveWorkbook.Close False (die Arbeitsmappe zu schließen)

Application.Quit (Excel zu beenden - nicht aufgefordert, Änderungen zu speichern) How to suppress "Save Changes" prompt when you close a workbook in Excel des

Von Microsoft Support:

einer Kraft Arbeitsmappe zu schließen, ohne Änderungen zu speichern, geben Sie den folgenden Code in einem Visual Basic-Modul dieser Arbeitsmappe ein:

Sub Auto_Close() 
    ThisWorkbook.Saved = True 
End Sub 

Da die Saved Eigenschaft auf True gesetzt ist, reagiert Excel, als ob hat die Arbeitsmappe bereits gespeichert wurde und keine Änderungen haben seit aufgetreten, dass im letzten speichern.

Die DisplayAlerts Eigenschaft des Programms kann für den gleichen Zweck verwendet werden. Der folgende Makro wird beispielsweise DisplayAlerts aus, schließt die aktive Arbeitsmappe, ohne die Änderungen zu speichern, und wird dann DisplayAlerts wieder eingeschaltet.

Sub CloseBook() 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Close 
    Application.DisplayAlerts = True 
End Sub 

Sie können auch die Savechanges Argument der Close Methode verwenden.

Das folgende Makro schließt die Arbeitsmappe, ohne Änderungen zu speichern:

Sub CloseBook2() 
    ActiveWorkbook.Close savechanges:=False 
End Sub 
+1

Danke! Ich habe die CloseBook() -Methode verwendet. –

2

Die Antwort, die Sie oben haben für VBA - Sie diese direkt in Ihrem VBS Adresse kann von

oWorkBook.Close False 
Set oWorkBook = Nothing 

mit in Platz von

Set oWorkBook = Nothing 
Verwandte Themen