Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Problem bei SaveAs

Problem bei SaveAs
04.02.2016 10:02:43
Peter
Hallo Excel-Fachleute,
seit Stunden sitze ich über einem Problem und kann dies nicht lösen.
Das Makro welches nicht funktioniert anbei:
Sub SaveFile()
Dim Tabelle As String
Dim Tabelle1 As String
Dim Tabelle2 As String
Dim fdate As Date
Dim fname As String
Dim path As String
Dim Name As String
Dim Ordner As String
Dim strTyp As String
Dim strDateiname As String
Dim aktPfad As String
Tabelle = Worksheets(7).Range("P4").Value
Tabelle1 = Worksheets(2).Range("X1").Value
Tabelle2 = Worksheets(7).Range("L4").Value
aktPfad = Worksheets(7).Range("P12") 'liest den aktuellen Pfad dieser Datei aus
Name = Worksheets(2).Range("X1")
fdate = Worksheets(Tabelle).Range("L4").Value
path = aktPfad & "\" & "Kopierkosten laufend" & "\" 'Application.ActiveWorkbook.path  'fehler
Ordner = "\" & "Kopierkosten_laufend" '& "\"
strDateiname = Tabelle1 & "_" & Tabelle2 & "." & strTyp
strTyp = "." & "xlsm"  'Evtl. Anpassen wenn xlsm Datei! 'vorher xlsx
If fdate > 0 Then
fname = Name & "_" & fdate
ChDir path
ActiveWorkbook.SaveAs Filename:="path & strDateiname, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False"
Else
MsgBox "Chose a date for the event", vbOKOnly
End If
End Sub
'ChDir "C:\Users\Peter\Desktop\Kopierkosten\Kopierkosten laufend"
' ActiveWorkbook.SaveAs Filename:= _
' "C:\Users\Peter\Desktop\Kopierkosten\Kopierkosten laufend\Kopierkostenabrechnung_15.04.2015.xlsm" _
' , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Es funktioniert alles bis auf die Zeile ab ActiveWorkbook.SaveAs....
Die darunter befindlichen 5 Zeilen sind das Produkt durch Makrorekorder.
ChDir Path bringt: C:\Users\Peter\Desktop\Kopierkosten\Kopierkosten laufend\
Ich weiss nicht wo das Problem liegt. Bitte helft mir.
Gruss Peter

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem bei SaveAs
04.02.2016 10:17:41
Daniel
Hi
der Fehler ist, dass du beim SaveAs den kompletten Parameterteil in Anführungszeichen gesetzt hast und somit dieser als Text und zu verwendender Dateiname interpretiert wird:
ActiveWorkbook.SaveAs Filename:=path & strDateiname, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
so wäre es richtig.
natürlich muss das path & strDateiname einen gültigen vollständigen Dateinamen ergeben, und der hängt auch vom Inhalt der Zelle Worksheets(7).Range("P12") ab.
deren Inhalt können wir natürlich nicht beurteilen.
desweiteren solltest du keine Variablenbezeichnungen verwenden, die auch Schlüsselwörter in VBA sein können.
Dies wäre bei dir bei "path" und "Name" der Fall.
So was kann funktionieren, es kann aber auch zu Fehlern führen.
Um auch unbekannte VBA-Schlüsselwörter zu vermeiden kann man folgendes tun:
a) deutsche Bezeichnungen verwenden (VBA ist immer Englisch), dh "Pfad" statt "path"
b) vor die Variablen den Präfix für den Dateityp setzten, dh "strPath" und "strName"
(VBA verwendet die Präfixe "xl", "vb" und "mso", wenn du diese meidest, sind verwechslungen ausgeschlossen)
interessanterweise wendest du die beiden Methoden ja auch an, nur eben genau bei den beiden Variablennamen nicht, die diesebezüglich problematsich sein könnten.
Gruß Daniel

Anzeige
AW: Problem bei SaveAs
04.02.2016 10:25:33
Peter
Hallo Daniel,
besten Dank für Deine schnelle Antwort.
Habe zwischenzeitlich den Fehler bemerkt. Aber Super Deine Erläuterungen bezüglich der Bezeichnung der Variablen. Ich werde dies sofort berichtigen um evtl. Fehler zu vermeiden. Besten Dank für Deine Hilfe.
Noch einen schönen Tag.
Gruss Peter

Anzeige
AW: Problem bei SaveAs
04.02.2016 10:18:13
Uwe
Hallo Peter,
lass die Anführungszeichen bei
ActiveWorkbook.SaveAs Filename:="path & strDateiname, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False"
weg.
Gruß Uwe

AW: Problem bei SaveAs
04.02.2016 10:21:45
Peter
Hallo Uwe,
besten Dank für Deine Hilfe.
Wünsche noch einen schönen Tag.
Gruss Peter

Anzeige
AW: Problem bei SaveAs behoben
04.02.2016 10:18:24
Peter
Hallo Excel-Frende,
es hat Klick gemacht. Ich habe den Fehler behoben.
Antwort: ActiveWorkbook.SaveAs Filename:=path & strDateiname & strTyp, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Danke für Eure Hilfe.
Gruss Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung bei ActiveWorkbook.SaveAs in VBA


Schritt-für-Schritt-Anleitung

Um das Problem mit ActiveWorkbook.SaveAs in VBA zu lösen, gehe folgendermaßen vor:

  1. Öffne deinen VBA-Editor: Drücke ALT + F11 in Excel.

  2. Finde das betroffene Makro: Suche das Makro, das du anpassen möchtest.

  3. Ändere die SaveAs-Zeile: Ersetze die fehlerhafte Zeile durch den folgenden Code:

    ActiveWorkbook.SaveAs Filename:=path & strDateiname & strTyp, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    Achte darauf, dass path, strDateiname und strTyp gültige Werte enthalten.

  4. Variablen überprüfen: Stelle sicher, dass keine deiner Variablen Namen wie path oder Name verwenden, da dies zu Konflikten führen kann.

  5. Testen: Führe das Makro aus und überprüfe, ob die Datei korrekt gespeichert wird.


Häufige Fehler und Lösungen

  • Problem mit Anführungszeichen: Ein häufiger Fehler ist, dass der gesamte Parameter in Anführungszeichen gesetzt wird. Dies führt dazu, dass Excel den Befehl nicht korrekt interpretiert. Stelle sicher, dass du die Anführungszeichen entfernst:

    Falsch:

    ActiveWorkbook.SaveAs Filename:="path & strDateiname", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    Richtig:

    ActiveWorkbook.SaveAs Filename:=path & strDateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
  • Ungültiger Dateiname: Wenn path oder strDateiname leer oder ungültig ist, wird der Befehl fehlschlagen. Überprüfe, ob die Zellen, die du verwendest, tatsächlich Werte enthalten.


Alternative Methoden

Wenn ActiveWorkbook.SaveAs weiterhin Probleme bereitet, kannst du folgende Alternativen ausprobieren:

  • Verwende Application.ActiveWorkbook.SaveAs: Diese Methode hat denselben Effekt, könnte aber in bestimmten Fällen stabiler sein.

    Beispiel:

    Application.ActiveWorkbook.SaveAs Filename:=path & strDateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
  • Nutze ActiveSheet.SaveAs: Diese Methode speichert nur das aktive Blatt, was in bestimmten Szenarien nützlich sein kann.


Praktische Beispiele

Hier ist ein Beispiel für ein funktionierendes Makro, das die oben genannten Änderungen integriert:

Sub SaveFile()
    Dim Tabelle As String
    Dim fdate As Date
    Dim path As String
    Dim strDateiname As String
    Dim strTyp As String

    Tabelle = Worksheets(7).Range("P4").Value
    fdate = Worksheets(Tabelle).Range("L4").Value
    path = Worksheets(7).Range("P12").Value ' Aktuellen Pfad auslesen
    strDateiname = Worksheets(2).Range("X1").Value & "_" & Worksheets(7).Range("L4").Value
    strTyp = ".xlsm" ' Dateityp

    If fdate > 0 Then
        ActiveWorkbook.SaveAs Filename:=path & strDateiname & strTyp, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    Else
        MsgBox "Wähle ein Datum für das Ereignis", vbOKOnly
    End If
End Sub

Tipps für Profis

  • Vermeide Schlüsselwörter: Verwende keine Variablennamen, die mit VBA-Schlüsselwörtern übereinstimmen. Dies kann zu Verwirrung und unerwarteten Fehlern führen.
  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um mögliche Fehler beim Speichern zu erfassen und zu behandeln.
  • Teste regelmäßig: Führe dein Makro häufig aus, um sicherzustellen, dass Änderungen wie erwartet funktionieren.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen xlOpenXMLWorkbook und xlOpenXMLWorkbookMacroEnabled?
xlOpenXMLWorkbook speichert die Datei als .xlsx, während xlOpenXMLWorkbookMacroEnabled die Datei als .xlsm speichert, die Makros enthalten kann.

2. Wie kann ich sicherstellen, dass der Dateiname gültig ist?
Überprüfe die Variablen, die du für den Dateinamen verwendest, und stelle sicher, dass sie keine ungültigen Zeichen oder leere Werte enthalten.

3. Was mache ich, wenn mein Makro immer noch nicht funktioniert?
Überprüfe alle Variablen und deren Inhalte sorgfältig. Füge Debugging-Anweisungen hinzu, um den Fehler zu lokalisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige