Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA speichern unter

VBA speichern unter
22.03.2020 09:40:50
Ralf
Hallo Zusammen,
ich möchte gern einen speicher unter Button haben der Dateiformat und Druckbereich definiert
hier mein funktionierender Speicher Button

Sub Gebüren()
DateiName = "sp-beitrags-gebührenordnung-" & Range("E12") & "-" & Range("E13") & ".pdf"
ChDir "C:\KGV\BK-Abrechnung\BK Sparte"
Range("A11:H85").ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:= _
xlQualityStandard, IncludeDocProperties:=True _
, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Hier mein nicht richtig funktionierender Speichern unter Button

Sub Gebürenspeichernunter()
With Application.FileDialog(msoFileDialogSaveAs)
.FilterIndex = 25
.InitialFileName = "sp-beitrags-gebührenordnung-" & Range("E12") & "-" & Range("E13") &  _
_
".pdf"
If .Show Then ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=.SelectedItems(1), Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
End Sub

Wenn ich "Range("A11:H85" einfüge funktioniert er nicht mehr und auch wenn das speichern unter Fenster auf geht so steht zwar der File Name drin aber das falsche Dateiformat ist vorausgewählt.
VG Ralf
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA speichern unter
22.03.2020 10:50:35
Nepumuk
Hallo Ralf,
nicht nachvollziehbar. Funktioniert einwandfrei.
If .Show Then Range("A11:H85").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=.SelectedItems(1), Quality:=xlQualityStandard, _
    IncludeDocProperties:=False, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

Gruß
Nepumuk
Anzeige
AW: VBA speichern unter
22.03.2020 12:45:23
Ralf
Hallo Nepumuk
Danke.. jetzt geht es komischerweise.
Sub Gebürenspeichernunter()
With Application.FileDialog(msoFileDialogSaveAs)
.FilterIndex = 25
.InitialFileName = "sp-beitrags-gebührenordnung-" & Range("E12") & "-" & Range("E13") &  _
".pdf"
If .Show Then Range("A11:H85").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=.SelectedItems(1), Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
End Sub
Leider geht die Vordefinierung des Dateiformat noch nicht. Er will die Datei im xla Format speichern
Gruß
Anzeige
AW: VBA speichern unter
22.03.2020 12:50:21
Nepumuk
Hallo Ralf,
stimmt den der Filterindex bei deinem Excel sprich steht unter Dateityp auch "PDF(*.pdf)"? Bei meinem Excel 2013 passt es.
Gruß
Nepumuk
AW: VBA speichern unter
22.03.2020 13:14:34
Ralf
Filterindex? bin ich überfordert. Ich kann pdf auswählen, wollte aber das es gleich als solches vordefiniert wird. Bei der automatischen Variante ( AutoSpeichen ) wird es als PDF abgelegt.
Anzeige
AW: VBA speichern unter
22.03.2020 13:18:38
Nepumuk
Hallo Ralf,
der Filterindex ist in deinem Programm definiert:
.FilterIndex = 25
Gruß
Nepumuk
AW: VBA speichern unter
22.03.2020 14:21:26
Ralf
wahrscheinlich liegt da der Fehler, ich hab kein Filter definiert. ehrlich gesagt weis ich auch nicht so recht wo ich diesen filter erstellen soll.
Anzeige
AW: VBA speichern unter
22.03.2020 14:40:20
Nepumuk
Hallo Ralf,
öffne den Speichern Unter - Dialog, öffne die Datetypenliste und zähle an der wie vielten Stelle PDF kommt, diese Zahl setzt du in Filterindex ein.
Userbild
Gruß
Nepumuk
AW: VBA speichern unter
22.03.2020 14:48:30
Ralf
danke... so einfach :D war die stelle 26
Ich wünsch dir noch einen schön Tag.
VG Ralf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Speichern Unter: So geht's richtig


Schritt-für-Schritt-Anleitung

Um einen „Speichern unter“-Button in Excel mit VBA zu erstellen, der das Dateiformat und den Druckbereich definiert, kannst du folgende Schritte durchführen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Rechtsklick auf „VBAProject (DeineDatei.xlsm)“ > Einfügen > Modul.
  3. Füge den folgenden Code ein:
Sub Gebürenspeichernunter()
    With Application.FileDialog(msoFileDialogSaveAs)
        .FilterIndex = 25 ' Stelle sicher, dass dies der Index für PDF ist
        .InitialFileName = "sp-beitrags-gebührenordnung-" & Range("E12") & "-" & Range("E13") & ".pdf"
        If .Show Then
            Range("A11:H85").ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=.SelectedItems(1), Quality:=xlQualityStandard, _
                IncludeDocProperties:=False, IgnorePrintAreas:=False, _
                OpenAfterPublish:=False
        End If
    End With
End Sub
  1. Anpassen der Filterindex: Überprüfe, ob der FilterIndex korrekt gesetzt ist, um das PDF-Format in deinem Excel „Speichern unter“-Dialog als Standard auszuwählen.

Häufige Fehler und Lösungen

  • Falsches Dateiformat: Wenn das falsche Format im Dialogfeld vorausgewählt ist, stelle sicher, dass der FilterIndex korrekt ist. Zähle die Position von PDF in der Dateitypliste des Dialogs und passe den Wert an.

  • Export funktioniert nicht: Wenn der Export nicht funktioniert, prüfe, ob der korrekte Bereich (Range("A11:H85")) ausgewählt ist. Manchmal kann es zu Problemen kommen, wenn der ausgewählte Bereich nicht korrekt definiert ist.


Alternative Methoden

Eine alternative Methode zum Verwenden des Application.FileDialog(msoFileDialogSaveAs) ist die direkte Angabe des Dateipfads im Code:

Sub DirektSpeichern()
    Dim DateiName As String
    DateiName = "C:\KGV\BK-Abrechnung\BK Sparte\sp-beitrags-gebührenordnung-" & Range("E12") & "-" & Range("E13") & ".pdf"
    Range("A11:H85").ExportAsFixedFormat Type:=xlTypePDF, Filename:=DateiName, Quality:=xlQualityStandard
End Sub

Diese Methode erfordert jedoch, dass der Pfad immer gleich bleibt und die Benutzer nicht die Möglichkeit haben, den Speicherort auszuwählen.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von msoFileDialogSaveAs in VBA:

  1. Speichern unter mit benutzerdefiniertem Dateinamen:

    Sub BenutzerdefiniertesSpeichern()
        With Application.FileDialog(msoFileDialogSaveAs)
            .InitialFileName = "MeinBericht.pdf"
            If .Show Then
                ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=.SelectedItems(1)
            End If
        End With
    End Sub
  2. Speichern in verschiedene Formate:

    Sub SpeichernInFormat()
        With Application.FileDialog(msoFileDialogSaveAs)
            .Filters.Clear
            .Filters.Add "PDF", "*.pdf"
            .Filters.Add "Excel-Datei", "*.xlsx"
            If .Show Then
                If .SelectedItems(1) Like "*.pdf" Then
                    ' PDF speichern
                Else
                    ' Excel speichern
                End If
            End If
        End With
    End Sub

Tipps für Profis

  • Überprüfung auf existierende Dateien: Überprüfe, ob eine Datei mit dem gleichen Namen bereits existiert, um versehentliches Überschreiben zu vermeiden.

  • Benutzerfreundliche Dialoge: Verwende die Application.FileDialog-Eigenschaften, um benutzerdefinierte Filter und Startnamen zu setzen, die für deine Benutzer hilfreich sind.

  • Error Handling: Implementiere Fehlerbehandlungsroutinen, um das Programm robuster zu machen und unerwartete Abstürze zu vermeiden.


FAQ: Häufige Fragen

1. Wie definiere ich den Filterindex für PDF?
Zähle die Position von „PDF(*.pdf)“ im Speichern unter-Dialog und setze diesen Wert in .FilterIndex.

2. Warum funktioniert der Export nicht?
Prüfe, ob der angegebene Bereich korrekt ist und ob der Dateiname gültige Zeichen enthält.

3. Kann ich den Dialog anpassen?
Ja, du kannst Filter hinzufügen oder die InitialFileName-Eigenschaft setzen, um die Benutzererfahrung zu verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige