mit meinen laienhaften xl-Kenntnissen habe ich mir 2 Makros gebastelt (mittels Recherche hier im Archiv). Beide funktionieren einwandfrei.
Da ich diese beiden Makros nun aber nicht in jede Datei extra reinkopieren möchte (unter: DieseArbeitsmappe), speicherte ich eine ansonsten leere xlsx-Datei als AddIn im xlam-Format ab...
Nun erscheint beim Öffnen jeder xl-Datei od. auch einer leeren Mappe folgende Fehlermeldung:
Laufzeitfehler 91:
Objektvariable oder With-Blockvariable nicht festgelegt
Klicke ich auf Debuggen wird die Zeile
fn = "d:\zw\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)...
gelb markiert u. es kommt die Meldung:
Code kann im Haltemodus nicht ausgeführt werden.
Wo liegt der Fehler?
Option Explicit ' Variablendefinition erforderlich
Private Sub Workbook_Open()
Dim aw As String
Dim fn As String
Const bytZeit As Byte = 3 'hier die Zeit für die Sichtbarkeit der MsgBox einstellen
Dim objWSH As Object
Dim intMSG As Integer 'wichtig für die Zeit der Sichtbarkeit der MsgBox
fn = "d:\zw\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5) & "---" & Format(Now, " _
YY-MM-DD") & "_" & Format(Now, "hh-mm") & ".xlsm"
aw = MsgBox("Soll eine Sicherungskopie erstellt werden?", vbQuestion + vbYesNoCancel)
If aw = vbCancel Then
ActiveWorkbook.Close False
End If
If aw = vbYes Then
On Error Resume Next
ActiveWorkbook.SaveCopyAs fn
If Err.Number > 0 Then
MsgBox Err.Description, vbCritical, "FEHLER!"
Err.Clear
aw = vbNo
Else
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup("Datei wurde erfolgreich gespeichert unter:" & vbCr _
& vbCr _
& fn & vbCr, bytZeit, "H I N W E I S ...")
Set objWSH = Nothing
End If
On Error GoTo 0
End If
If aw = vbNo Then
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup("Es wurde keine Sicherungskopie erstellt!" & Space(10), bytZeit, " _
Warnung...")
Set objWSH = Nothing
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim SaveAsUI As Boolean
Dim aw2 As String
Const strPfadArchiv As String = "D:\zw2\" 'Archiv-Verzeichnis-anpassen!!
aw2 = MsgBox("Soll eine Sicherungskopie für das NETZWERK erstellt werden?" & vbCr _
& vbCr _
& "( Zu finden unter:" & vbCr _
& Space(5) & strPfadArchiv & " )", vbQuestion + vbYesNo)
If aw2 = vbNo Then
Exit Sub
End If
If aw2 = vbYes Then
ActiveWorkbook.SaveCopyAs strPfadArchiv & ActiveWorkbook.Name
End If
End Sub
Kann mir jemand helfen - bin echt am Verzweifeln.
Gruß Dirk C.