Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1828to1832
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopie automatisch mit Makros speichern

Kopie automatisch mit Makros speichern
10.05.2021 10:52:03
Davidina11
Hallo,
Ich habe eine Excel-Datei als Vorlage inklusive Makros erstellt und möchte, dass der Nutzer, seine Kopien der Datei auch direkt mit Makros (also im Format .xlsm) abspeichern. Ansonsten erscheint eine verwirrende Abfrage beim Speichern
Dafür habe ich folgenden Code eingefügt. Aber leider wird beim Speichern standardmäßig immer noch ".xlsx" ausgewählt. Wo liegt mein Fehler?
'stellt sicher, dass Datei mit Makros gespeichert wird

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileNameVal As String
If SaveAsUI Then
FileNameVal = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Cancel = True
If FileNameVal = "False" Then 'User pressed cancel
Exit Sub
End If
ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
End If
End Sub
Ich habe auch einen Button, der die aktuelle Datei als PDF ausdruckt. Entstehen dabei vielleicht Konflikte?
Sub Drucken()
With ActiveSheet.PageSetup
.BottomMargin = 56 'Abstand zum unteren Papierrand
.FooterMargin = 42 'Abstand der Fußzeile zum unteren Papierrand in Punkt (56 pt = 2cm, 42 pt = 1,5 cm)
'&8 = Schriftgröße auf 8 einstellen, WorksheetFunction.Rept("_", 50) = Trennstrich per Repeat, vbCR = Zeilenumbruch
.LeftFooter = "&8" & _
Application.WorksheetFunction.Rept("_", 80) & vbCr & _
"Letzte Änderung: " & _
ActiveWorkbook.BuiltinDocumentProperties _
("last save time") & vbCr & _
"Ersteller: " & _
ActiveWorkbook.BuiltinDocumentProperties _
("author") & vbCr & "Speicherort: " & ActiveWorkbook.FullName
End With
'prüft, ob das Verzeichnis "Exporte" bereits existiert, sonst wird es angelegt
If Dir(ThisWorkbook.Path & "\Exporte", vbDirectory) = "" Then
MkDir ThisWorkbook.Path & "\Exporte"
End If
'speichert das aktive Blatt (Zusammenfassung) als PDF im Ordner Exporte mit aktuellem Datum und Projektnamen aus B3
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Exporte\" & _
Format(Date, "YYYY.MM.DD_") & "Projektkosten_" & Worksheets("Zusammenfassung").Cells(3, 2).Value & ".pdf"
'Message gespeichert mit Speicherort anzeigen
MsgBox "Die Kostenzusammenfassung wurde unter " & vbCr & _
ThisWorkbook.Path & "\Exporte\" & _
Format(Date, "YYYY.MM.DD_") & "Projektkosten_" & Worksheets("Zusammenfassung").Cells(3, 2).Value & ".pdf" & vbCr & "gespeichert.", vbInformation
End Sub Schöne Grüße
davidina11

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopie automatisch mit Makros speichern
10.05.2021 12:13:01
Dieter
Hallo Davidina,
was hältst du davon, "SaveCopyAs" für die Speicherung von Sicherungskopien zu verwenden?
Das könnte dann so aussehen:

Option Explicit
Private Const Sachgebiet As String = "Zusätzliche Sicherung bei jedem Speichern, V. 1.0"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fso As Object
Dim fol As Object
Dim i As Long
Dim pfad(1 To 2) As String
Dim zf As String
If SaveAsUI Then Exit Sub
pfad(1) = "H:\Sicherung\"
pfad(2) = "\\MEDION_2015\G\Gemeinsame Dateien\"
Set fso = CreateObject("Scripting.FileSystemObject")
On Error GoTo Fehlerbeh
For i = 1 To 2
If fso.FolderExists(pfad(i)) Then
Me.SaveCopyAs Filename:=pfad(i) & Me.Name
Application.StatusBar = i & ". Sicherung auf: " & pfad(i)
zf = zf & i & ". Sicherung auf: " & pfad(i) & vbNewLine
Else
Application.StatusBar = i & ". Pfad """ & pfad(i) & """ ist nicht verfügbar!"
zf = zf & i & ". Keine Sicherung auf: " & pfad(i) & vbNewLine
End If
Next i
MsgBox Prompt:=zf, _
Buttons:=vbInformation, _
Title:=Sachgebiet
GoTo Ende
Fehlerbeh:
If i = 0 Then
zf = "i = " & i & vbNewLine & Err.Description
Else
zf = "Problem bei der Sicherung auf" & vbNewLine & _
pfad(i) & vbNewLine & " (i = " & i & ")" & vbNewLine & Err.Description
End If
MsgBox Prompt:=zf, _
Buttons:=vbCritical, _
Title:=Sachgebiet
Ende:
Application.StatusBar = Empty
End Sub
Bei diesem Vorschlag würde für die Sicherungskopien der gleiche Name verwendet, wie für das Original.
Viele Grüße
Dieter
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige