Excel schließt nicht, nach Makro Ausführung
22.07.2025 11:54:32
Liv3pl4y
Was habe ich versucht?
- Speichern Funktion deaktiviert (sollte natürlich aktiviert sein, wegen dem Logging)
- Application.Quit am Ende des Makros
- Application.Quit mit definierter Variable
- Bevor Application.Quit ausgeführt wird, Workbook Save mit und ohne Variable
- Verzögerter Workbook Open Sub mit OnTime Now
- TrustCenter Einstellungen mit/ohne Beachrichtigung, oder alle alle vertrauen - Immer das gleiche Ergebnis
-- Zugriff auf VBA-Projektmodell vertrauen ist aktiviert. Spiel aber auch keine Rolle, wenn es deaktiviert ist.
VBAProject -- MS Excel Objekte -- Diese Arbeitsmappe:
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:02"), "BackupIQOSFile"
End Sub
VBAProject -- Module -- Modul1:
Sub BackupIQOSFile()
Dim sourcePath As String
Dim targetPath As String
Dim fileName As String
Dim newFileName As String
Dim fullSourcePath As String
Dim fullTargetPath As String
Dim currentDate As String
Dim logSheet As Worksheet
Dim nextRow As Long
Dim logAction As String
Dim xlApp As Application
Dim wb As Workbook
Set xlApp = Application
' Pfade und Dateinamen
sourcePath = "\\eudewobsa01\Daten_EUDEWOBFS06\SAC-Upload\Region-DE\R-DE\Rohdaten (Manueller Import)\IQOS\"
targetPath = sourcePath & "Versionierung Test\Backup - Aktuelle Datei\"
fileName = "IQOS_Query_Primary-Export.xlsx"
currentDate = Format(Date, "dd.mm")
newFileName = currentDate & " " & fileName
fullSourcePath = sourcePath & fileName
fullTargetPath = targetPath & newFileName
' Logging vorbereiten
On Error Resume Next
Set logSheet = ThisWorkbook.Sheets("Log")
If logSheet Is Nothing Then
Set logSheet = ThisWorkbook.Sheets.Add
logSheet.Name = "Log"
logSheet.Range("A1:D1").Value = Array("Datum", "Uhrzeit", "Aktion", "Dateiname")
End If
On Error GoTo 0
' Prüfen, ob Quelldatei existiert
If Dir(fullSourcePath) = "" Then
logAction = "Quelldatei fehlt"
GoTo LogEntry
End If
' Prüfen, ob Zieldatei bereits existiert
If Dir(fullTargetPath) > "" Then
logAction = "Datei bereits vorhanden"
GoTo LogEntry
End If
' Datei kopieren
FileCopy fullSourcePath, fullTargetPath
logAction = "Datei kopiert"
LogEntry:
' Log-Eintrag schreiben
With logSheet
nextRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(nextRow, 1).Value = Format(Now, "dd.mm.yyyy")
.Cells(nextRow, 2).Value = Format(Now, "HH:MM")
.Cells(nextRow, 3).Value = logAction
.Cells(nextRow, 4).Value = fullTargetPath
End With
' Alle geöffneten Arbeitsmappen schließen
For Each wb In xlApp.Workbooks
wb.Close SaveChanges:=True
Next wb
' Excel beenden
xlApp.Quit
Set xlApp = Nothing ' Objekt freigeben
End Sub
Ich habe gelesen, das es zu Problemen mit Netzwerkpfaden kommen kann, aber auch damit, wenn nicht alle Vorgänge beendet wurden, aber Application.Quit vorher aufgerufen wird. Ich nahm an, das könnte nur mit dem Speichern der Datei zusammenhängen, da das Ergebnis aber mit "saveChanges:=True und False gleich ist, kann es daran nicht liegen. Ich bin überfragt.
Es ist wichtig das, dass Makro nach dem Öffnen der Arbeitsmappe automatisch ausgeführt wird und Excel auch automatisch beendet wird. Da die Makro-Datei von einem Bot angesteuert wird.
Anzeige