Office: (Office 2016) VBA Speichern: Warum funktioniert mein Makro nicht richtig

Helfe beim Thema VBA Speichern: Warum funktioniert mein Makro nicht richtig in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo an alle, ich habe bisher häufiger sehr gute Tipps im Forum gefunden. Leider habe ich aber ein Problem an dem ich z.Z. scheitere. Seit... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Holzwurm, 19. August 2020.

  1. Holzwurm Neuer User

    VBA Speichern: Warum funktioniert mein Makro nicht richtig


    Hallo an alle,

    ich habe bisher häufiger sehr gute Tipps im Forum gefunden. Leider habe ich aber ein Problem an dem ich z.Z. scheitere.
    Seit längeren versuche ich immer wieder den Fehler in dem unten aufgeführten Makro zu finden.
    Da meine VBA Kenntnisse ehr als sehr Mangelhaft zu beschreiben sind, finde ich den Fehler nicht. Daher wäre ich über einen Tipp sehr dankbar.

    Ich möchte mit einem Button die Excel-Datei speichern mit "Speichern unter". Dabei soll sowohl der Pfad als auch der Dateiname aus verschiedenen Zellen zusammengefügt werden.
    Bei dem Dateinamen funktioniert das super, aber leider nicht beim Pfad. Dort wird immer nur der Aktuelle Pfad vorgeschlagen...

    Code:
    Sub SpeichernUnter_Click()
    
        Dim strDateiname As String
        Dim strVerzeichnis As String
    
        strVerzeichnis = ThisWorkbook.Sheets("DB").Range("D57")
        strDateiname = ("Schranksystem_" & ThisWorkbook.Sheets("DB").Range("F57") & ".xlsm")
        Application.Dialogs(xlDialogSaveAs).Show (strVerzeichnis & strDateiname)
    
    End Sub 
    Denn wunsch den Pfad als als UNC-Pfad auszuführen habe ich schon aufgegeben. Alle Lösungsansetze die ich gefunden habe, führten zu noch mehr Chaos...

    Viele Grüße

    Holzwurm
     
    Holzwurm, 19. August 2020
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    den VBA-Code müsstest du etwas modifizieren/ergänzen (rot) zu:

    Code:
    Sub SpeichernUnter_Click()
    
        Dim strDateiname As String
        Dim strVerzeichnis As String
    
        With ThisWorkbook
           With .Sheets("DB")
              strVerzeichnis = .Range("D57")
              strDateiname = "Schranksystem_" & .Range("F57") & ".xlsm"
           End With
           [COLOR="#0000FF"]If Right(strVerzeichnis, 1) <> "\" Then strVerzeichnis = strVerzeichnis & "\"[/COLOR]
           [COLOR="#FF0000"].SaveAs Filename:=strVerzeichnis & strDateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled[/COLOR]
        End With
    End Sub
    
    Und der Vorsicht halber solltest du die blaue Zeile hinzufügen.

    Bezüglich UNC-Pfad muss man eventuell eine Excel-Tücke beachten: So ein UNC-Pfad beginnt ja bekanntlich mit 2 Backslashes, zB. "\\Pfad\Datei.xlsm".
    Du solltest überprüfen, ob eh noch beide \\ vorhanden sind oder ob dir Excel einen \ gestohlen hat, insbesondere dann, wenn du "\\Pfad" aus einer Excel-Zelle entnimmst. Du solltest dann eine weitere Zeile vor der blauen Zeile einfügen:
    Code:
    If Left(strVerzeichnis,2)<>"\\" then strVerzeichnis="\" & strVerzeichnis
    
     
    Exl121150, 19. August 2020
    #2
  3. Holzwurm Neuer User
    Hallo Exl121150,

    vielen Danke für die Modifizierung des VBA – Code.:D
    Jetzt funktioniert es so wie ich mir das vorgestellt habe.

    Den Befehl With kannte ich nicht. Nach etwas lesen, ist mir die Bedeutung jetzt verständlich. Ob ich beim nächsten Mal von selbst darauf komme ist aber nicht ganz sicher…

    Die Blaue Zeile brauche ich eigentlich nicht, da dieses in der Zelle schon kontrolliert wurde. Aber ein Pfad ohne Backslash vor dem Dateinamen macht ein grosses Problem… Als zum Gürtel die Hosenträger.

    Wenn ich die rote Zeile richtig verstehe, könnte ich statt =xlOpenXMLWorkbookMacroEnabled
    auch
    .Value = 52
    Verwenden. Also die Kontrolle das die Datei als xlsm gespeichert wird. Oder habe ich da ein Verständnis Problem?

    Die Problematik mit dem Backslash Hinsichtlich Excel und UNC-Pfad war mir so nicht bewusst. Aber das erklärt einiges an den vielen "? " die sich mir gestellt haben.
    Ich werde mich mit dem UNC-Pfad morgen beschäftigen

    Holzwurm
     
    Holzwurm, 19. August 2020
    #3
  4. Exl121150 Erfahrener User

    VBA Speichern: Warum funktioniert mein Makro nicht richtig

    Hallo,

    du hast richtig verstanden, dass der Parameterwert "xlOpenXMLWorkbookMacroEnabled" nötig ist, um die Speicherung als xlsm-Datei zu steuern, wobei diese Parameterkonstante den Wert 52 hat. Man kann also beides verwenden, solange die Excel-Objektklasse im Projekt eingebunden ist - und das ist sie beim Einsatz innerhalb einer Excel-Anwendung automatisch.
    Allerdings bin ich mit der Formulierung ".Value = 52" bzw. ".Value = xlOpenXMLWorkbookMacroEnabled" nicht einverstanden:
    1. Der Punkt vor "Value" deutet darauf hin, dass "Value" eine Eigenschaft (property) einer Objektinstanz ist, die innerhalb eines "With Objektinstanz ... End With"-Blockes eingesetzt wird. Das ist hier aber nicht der Fall.
    2. Ich bin auch mit "Value" nicht zufrieden, denn der benannte Parameter der Objektmethode "ThisWorkbook.SaveAs" heißt "FileFormat:=...", also in diesem Fall "FileFormat:=52" bzw. "FileFormat:=xlOpenXMLWorkbookMacroEnabled".
    3. Die Objektinstanz "ThisWorkbook" hat eine Methode "SaveAs", welche mit "ThisWorkbook.SaveAs [Parameterliste]" aufgerufen wird. Innerhalb eines "With ThisWorkbook: ... End With"-Blockes kann sie dann auch nur als ".SaveAs [Parameterliste]" geschrieben werden, denn der führende Punkt vor "SaveAs" verweist dann auf den umgebenden With-Block (wo ja auf die Objektinstanz "ThisWorkbook" verwiesen wird).
      Die "SaveAs"-Methode besitzt eine Parameterliste, mit der der Methode weitere Werte (sogenannte aktuelle Parameter) übergeben werden (können), um sie präziser steuern zu können. Das sind in diesem Fall lauter optionale Parameter, dh. diese können auch (alle) weggelassen werden - nur muss man dann wissen, was die Methode bei fehlenden Parametern tut. Jeder Parameter besitzt einen Namen, der vor dem ":=" steht. Dieser kann auch weggelassen werden zusammen mit dem ":=".
      Also sind folgende Methodenaufrufe legitim:
      ThisWorkbook.SaveAs Filename:="Pfad+Dateiname", FileFormat:=52
      ThisWorkbook.SaveAs "Pfad+Dateiname", 52
      ThisWorkbook.SaveAs "Pfad+Dateiname", xlOpenXMLWorkbookMacroEnabled


      Die vollständige Beschreibung der .SaveAs-Methode und ihrer (optionalen) Parameter findest du bei Microsoft im Link:
      https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.saveas
    Eine solche Pfadangabe lautet ja im Prinzip:
    \\UNC-Pfad\DateiPfad\Dateiname.Dateierweiterung
    Man kann natürlich diese Bestandteile in einem Excel-Arbeitsblatt in Zellen speichern und sie dann per VBA zusammensetzen. Der doppelte Backslash am Beginn des UNC-Pfades muss natürlich schlussendlich bei Ausführung der .SaveAs-Methode mit Parameter FileName vorhanden sein.
    Die Excel-Tücke besteht darin, dass der erste \ in einer Zelle verschluckt werden kann, weil er dann zur Zellformatierung verwendet wird.
    Das Makro muss daher überprüfen, ob der UNC-Pfad eh mit diesen beiden \\ beginnt, ansonsten er entsprechend ergänzt werden muss vor dem Einsatz in der .SaveAs-Methode der ThisWorkbook-Objektinstanz.
     
    Exl121150, 20. August 2020
    #4
  5. Holzwurm Neuer User
    Hallo Exl121150,

    vielen Dank für die sehr Ausführlichen Erklärungen..
    Jetzt "lichtet" sich bei der Thematik der Nebel ein wenig aber es ergeben viele neue Fragen. Aber das ist ja immer so, wenn man sich in neue Themengebiete vortastet.

    Holzwurm
     
    Holzwurm, 21. August 2020
    #5
Thema:

VBA Speichern: Warum funktioniert mein Makro nicht richtig

Die Seite wird geladen...
  1. VBA Speichern: Warum funktioniert mein Makro nicht richtig - Similar Threads - VBA Speichern funktioniert

  2. VBA - Serienbriefe in einzelnen Dokumenten speichern

    in Microsoft Word Hilfe
    VBA - Serienbriefe in einzelnen Dokumenten speichern: Hallo, Ich möchte Serienbriefe mit Daten aus einem Excelsheet erstellen. Dann sollen die Briefe als einzelne Word-Dokumente in einem Ordner abgespeichert werden. Dazu soll ein Ordner, benannt...
  3. Bereich speichern als PDF speichern

    in Microsoft Excel Hilfe
    Bereich speichern als PDF speichern: Hallo Leute, leider habe ich ein Problem mit meinem VBA-Code. Bin leider noch nicht so fit darin. Ich habe einen VBA-Code erstellt, womit ein festgelegter Bereich eingeblendet, als PDF gespeichert...
  4. VBA Problem - Tabellenblatt als PDF speichern funktioniert nicht

    in Microsoft Excel Hilfe
    VBA Problem - Tabellenblatt als PDF speichern funktioniert nicht: Hallo zusammen, mein Name ist Marc, und ich bin neu hier... Ich habe ein Problem mit einem Makro und komme leider nicht weiter ☹ vielleicht könnt ihr mir helfen? In der angefügten Datei verwende...
  5. Ausgewählte Zellen per VBA in verschiedene Tabellen speichern

    in Microsoft Excel Hilfe
    Ausgewählte Zellen per VBA in verschiedene Tabellen speichern: Hallo liebe Forumfreunde, ich bin totaler Anfänger in Sachen VBA. versuche gerade etwas vba zu lernen *Smilie ich habe mir eine Mapper erstellt, wo ich aus Tabelle1 bestimmte Zellen in eine...
  6. VBA Filecopy, gleiches PDF mehrmals unter anderem Namen speichern

    in Microsoft Excel Hilfe
    VBA Filecopy, gleiches PDF mehrmals unter anderem Namen speichern: Hallo zusammen Ich habe ein Problem. Ich möchte eine abgespeicherte PDF-Datei (C:Beleg.pdf) mehrmals unter verschiedenem Dateiname speichern. Die Dateinamen habe ich im Feld A5, A6 etc. erfasst....
  7. Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA

    in Microsoft Excel Hilfe
    Datei Schließen (Bei Schreibschutz ohne speichern, ohne Schreibschutz speichern) VBA: Hallo zusammen, ich möchte per VBA beim beenden bzw. schließen der Datei abfragen ob diese Schreibgeschützt geöffnet ist. 1. Ist Datei Schreibgeschützt dann schließen, nicht speichern, nicht...
  8. VBA - BackUp-Speichern - Code funktioniert nicht

    in Microsoft Excel Hilfe
    VBA - BackUp-Speichern - Code funktioniert nicht: Hallo in die Runde, seit etwa einem Jahr benutze ich in einer Datei ein Makro um automatische BackUps zu speichern. Jetzt benötige ich diese Funktion auch für eine andere Datei, habe den...
Schlagworte:

Users found this page by searching for:

  1. excel vba code geht nicht bei speicherung xlxm

    ,
  2. excel 2016 vba funktioniert nicht richtig

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden