2017-06-30 1 views
1

Ich bin sehr neu in VBA und habe versucht, ein Makro zu schreiben, das meine Arbeitsmappe aktualisiert, speichert und schließt, wenn ich sie öffne. Es schließt die Arbeitsmappe nicht, sondern speichert die ganze Zeit in einer neueren Version.VBA wird keine Arbeitsmappe schließen und speichert weiter

Sub Main() 

Dim sngStartTime, sngTotaltime As Date            
Dim LstUpdateRow As Integer              
sngStartTime=Now                 

LstUpdateRow = Workbooks("Quick").Worksheets("settings").Range("c60000").End(xlUp).Row + 1    
sngTotaltime = Now - sngStartTime             
Workbooks("Quick").Worksheets("Settings").Cells(LstUpdateRow, 3) = Now         
Workbooks("Quick").Worksheets("Settings").Cells(LstUpdateRow, 4) = sngStartTime       
Workbooks("Quick").Worksheets("Settings").Cells(LstUpdateRow, 5) = sngTotaltime       

End Sub 

Sub RefreshData() 

Application.Run "RefreshEntireWorkbook" 

Application.Run "RefreshAllStaticData" 

Application.OnTime Now() + TimeValue("00:00:05"), "Main" 

End Sub 

Thisworkbook:

Private Sub Workbook_Open() 

Main 
RefreshData 

Workbooks("Quick").Close Savechanges:=true 

End Sub 
+0

Wohin führen Sie Ihren Code aus? –

+0

Im Ausführen meines Codes von "Thisworkbook" Blatt kann dann die Subs von meinem Modul aufrufen. Ich möchte nur, dass es aktualisiert, gespeichert und geschlossen wird, wenn ich meine Excel-Datei öffne. –

+0

Wenn Sie Ihren Code Schritt für Schritt debuggen, gibt es einen Looping irgendwo in der Welt oder endet der Sub? –

Antwort

1

Versuchen setzen:

Workbooks("Quick.xlsm").Close Savechanges:=true 

Oder was auch immer Ihre Erweiterung für diese bestimmte Arbeitsmappe ist. Ich replizierte das Arbeitsbuch (bis zu einem gewissen Grad) und öffnete es, als ob Sie es selbst wären. Die Datei öffnete sich, tat, was gesagt wurde, wurde gespeichert und geschlossen.

+0

Es funktioniert, vielen Dank! –

+0

Freut mich zu hören! Für zukünftige Aufzeichnungen ordne ich meine Arbeitsbuchnamen in der Regel Variablen zu, wenn sie im Code mehrfach aufgerufen werden (besonders wenn zwischen ThisWorkbook und Modules gesprungen wird). Auf diese Weise es sein würde: 'Dim wb als Arbeitsmappe wb Set = Active Workbooks (wb.Name) .Close Savechanges = true' Ist dies Ihre Frage beantwortet es bitte als die richtige Antwort markieren. Vielen Dank! – Busse

Verwandte Themen