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

Forumthread: Datei auf Desktop speichern

Datei auf Desktop speichern
03.07.2023 22:21:12
EberhardDaniel

Guten Abend
Ich öffne mit unterstehenden Code das Dialogfenster zum speichern auf. Dummerweise befindet sich auf dem Desktop ein Ordner mit dem selben Name wie die Datei welche ich speichern möchte.
Nach Eingabe des Namen öffnet sich jedoch der Ordnen und speichert nicht wie gewünscht die Datei auf den Desktop. Kann man dies irgendwie umgehen?


Sub PDF_Generieren()
    Dim strOrdner As String
    Dim j As Long

    strOrdner = Environ("USERPROFILE") & "C:\"
    
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = strOrdner
        .Title = "Set 1 Band speichern"
        .ButtonName = "Datei speichern"
        .InitialView = msoFileDialogViewDetails
        .Show
        
        For j = 1 To .Filters.Count
            If UCase$(.Filters(j).Extensions) Like "*.PDF*" Then
                .FilterIndex = j: Exit For
            End If
        Next j
    End With
End Sub


Besten Dank für Eure Hilfe.

Freundliche Grüsse Daniel Eberhard

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei auf Desktop speichern
04.07.2023 01:49:15
onur
Wenn du doch vorher weisst, wo die Datei und unter welchem Namen, warum FileDialog?


AW: Datei auf Desktop speichern
04.07.2023 07:24:43
Eberhard Daniel
Hallo onur
Das weis ich bei meinem PC. Wie es auf dem PC von meinen Kollegen aussieht und wo sie die Datei speichern möchten, weis ich ja nicht.


AW: Datei auf Desktop speichern
04.07.2023 08:40:52
Ulf

Sub PDF_Generieren()
    Dim strOrdner As String
    Dim j As Long
    Dim strDatei As String
    Dim intErgebnis As Integer
    '???
    'Environ("USERPROFILE") ist ein vollständiger Pfad=> c:\users\%User%C:\
    'strOrdner = Environ("USERPROFILE") & "C:\"
    strOrdner = Environ("USERPROFILE") & "\Desktop"
    strDatei = "New.pdf"
    With Application.FileDialog(msoFileDialogSaveAs)
        'InitialFileName not InitialDirectory !
        .InitialFileName = strOrdner & "\" & strDatei
        .Title = "Set 1 Band speichern"
        .ButtonName = "Datei speichern"
        .InitialView = msoFileDialogViewDetails
        For j = 1 To .Filters.Count
            If UCase$(.Filters(j).Extensions) Like "*.PDF*" Then
                .FilterIndex = j: Exit For
            End If
        Next j
        intErgebnis = .Show
        If intErgebnis > 0 Then
            strDatei = .SelectedItems(1)
            MsgBox strDatei
        End If
    End With
End Sub
hth
Ulf


Anzeige
AW: Datei auf Desktop speichern
04.07.2023 16:16:04
Eberhard Daniel
Hallo Ulf
Danke für Deinen Vorschlag. Aber irgendwie funktioniert es auch nicht.
Ist es nicht möglich, dass es nach der Eingabe automatisch ein ".PDF" hinten dran schreibt?

Freundliche Grüsse
Daniel Eberhard


AW: Datei auf Desktop speichern
04.07.2023 16:21:15
onur
Wie ICH schon schrieb: der Filepicker ist "autark" - er verlässt VBA und VBA übernimmt erst wieder, wenn die Datei gespeichert wurde !


Anzeige
AW: Datei auf Desktop speichern
04.07.2023 19:22:18
Ulf
statt

strDatei = .SelectedItems(1)

strDatei = iif(lcase(right(.SelectedItems(1),4)>".pdf", .SelectedItems(1) & ".pdf", .SelectedItems(1))
hth
Ulf


AW: Datei auf Desktop speichern
04.07.2023 19:33:47
onur
Das macht den Kohl auch nicht fett.
Meine alte Deutschlehrerin hätte gesagt " Thema verfehlt - Setzen! Sechs!" :)
Die Aufgabe/das Problem war: wenn es einen Ordner auf dem Desktop gibt, die genauso heisst, wie die Datei heissen soll, wird sie nicht unter diesem Namen gespeichert, sondern es wird nur der Ordner geöffnet.


Anzeige
AW: Datei auf Desktop speichern
04.07.2023 13:49:49
onur
Solange du den Dateinamen ohne ".pdf" eingibst, wird das passieren, da das Makro unterbrochen ist, solange die Dialogbox offen ist und alles. was währenddessen passiert, nicht per VBA verarbeitet werden kann.
Also einfach Endung mit eingeben oder aber mit Folderpicker und Inputbox (für Namen) arbeiten. Oder einfach den blöden Ordner auf dem Desktop umbennen.


Anzeige
AW: Datei auf Desktop speichern
05.07.2023 01:06:32
Ulf

Option Explicit

Sub PDF_Generieren()
    Dim strOrdner As String
    Dim j As Long
    Dim strDatei As String
    Dim intErgebnis As Integer
    '???
    'Environ("USERPROFILE") ist ein vollständiger Pfad=> c:\users\%User%C:\
    'strOrdner = Environ("USERPROFILE") & "C:\"
    strOrdner = Environ("USERPROFILE") & "\Desktop"
    strDatei = "Öfter" '"Öfter.pdf"
    With Application.FileDialog(msoFileDialogSaveAs)
        'InitialFileName not InitialDirectory !
        .InitialFileName = strOrdner & "\" & strDatei
        .Title = "Set 1 Band speichern"
        .ButtonName = "Datei speichern"
        .InitialView = msoFileDialogViewDetails
        For j = 1 To .Filters.Count
            If UCase$(.Filters(j).Extensions) Like "*.PDF*" Then
                .FilterIndex = j: Exit For
            End If
        Next j
        intErgebnis = .Show
        If intErgebnis > 0 Then
            strDatei = IIf(LCase(Right(.SelectedItems(1), 4)) > ".pdf", .SelectedItems(1) & ".pdf", .SelectedItems(1))
            ThisWorkbook.Worksheets(1).ExportAsFixedFormat xlTypePDF, strDatei
            MsgBox strDatei
        End If
    End With
End Sub
Resultiert zu

da ergänzt wird

und somit:

nach .Show ist Ende im Hook.
GetSaveFile wär vernünftiger und Inputbox auch, aber ich entscheide nicht
hth
Ulf

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datei auf Desktop speichern in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei auf dem Desktop zu speichern, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub PDF_Generieren()
       Dim strOrdner As String
       Dim j As Long
       Dim strDatei As String
       Dim intErgebnis As Integer
    
       strOrdner = Environ("USERPROFILE") & "\Desktop"
       strDatei = "MeinDokument.pdf"
    
       With Application.FileDialog(msoFileDialogSaveAs)
           .InitialFileName = strOrdner & "\" & strDatei
           .Title = "Datei speichern"
           .ButtonName = "Datei speichern"
           .InitialView = msoFileDialogViewDetails
           For j = 1 To .Filters.Count
               If UCase$(.Filters(j).Extensions) Like "*.PDF*" Then
                   .FilterIndex = j: Exit For
               End If
           Next j
           intErgebnis = .Show
           If intErgebnis > 0 Then
               strDatei = IIf(LCase(Right(.SelectedItems(1), 4)) = ".pdf", .SelectedItems(1), .SelectedItems(1) & ".pdf")
               ThisWorkbook.Worksheets(1).ExportAsFixedFormat xlTypePDF, strDatei
               MsgBox "Gespeichert als: " & strDatei
           End If
       End With
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, um die Datei auf dem Desktop zu speichern.


Häufige Fehler und Lösungen

  1. Datei wird nicht gespeichert, sondern öffnet nur den Ordner:

    • Stelle sicher, dass der Dateiname nicht mit einem bereits bestehenden Ordner auf dem Desktop übereinstimmt. Wähle einen anderen Namen oder benenne den Ordner um.
  2. PDF-Erweiterung wird nicht automatisch hinzugefügt:

    • Verwende den IIf-Befehl im Code, um die Dateiendung zu überprüfen und anzufügen, falls sie fehlt.
  3. Fehler beim Zugriff auf den Desktop:

    • Überprüfe, ob der Pfad korrekt ist. Der Befehl Environ("USERPROFILE") sollte ohne Probleme den Benutzerordner erreichen.

Alternative Methoden

  • Direktes Speichern ohne Dialog: Wenn du den Dateinamen und den Speicherort kennst, kannst du das Speichern ohne den Dialogfenster durchführen:

    ThisWorkbook.SaveAs Filename:=Environ("USERPROFILE") & "\Desktop\MeineDatei.xlsx"
  • Verwendung eines InputBox: Du kannst eine InputBox verwenden, um den Namen der Datei abzufragen und sie dann auf dem Desktop zu speichern.


Praktische Beispiele

  1. Speichern eines einzelnen Arbeitsblatts als PDF:

    ThisWorkbook.Worksheets("Tabelle1").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Environ("USERPROFILE") & "\Desktop\Tabelle1.pdf"
  2. Excel Tabelle auf Desktop speichern:

    ThisWorkbook.SaveAs Filename:=Environ("USERPROFILE") & "\Desktop\ExcelTabelle.xlsx"

Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Makros sichern: Achte darauf, dass die Makros in einer Datei mit der Endung .xlsm gespeichert werden, um sie weiterhin nutzen zu können.

  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um Probleme im Code schnell zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Datei immer auf dem Desktop gespeichert wird?
Verwende den Befehl Environ("USERPROFILE") & "\Desktop" im Code, um den Desktop-Pfad dynamisch zu ermitteln.

2. Kann ich die Datei als ein einzelnes Tabellenblatt speichern?
Ja, verwende ExportAsFixedFormat, um nur das gewünschte Arbeitsblatt als PDF zu speichern.

3. Warum funktioniert der Dateidialog auf einem anderen PC möglicherweise nicht?
Überprüfe, ob die Datei-Dialoge in den Excel-Einstellungen aktiviert sind und ob der Pfad korrekt ist. Unterschiedliche Benutzerprofile können ebenfalls zu Problemen führen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige