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

Forumthread: Datei temporär speichern, unabhängig vom User

Datei temporär speichern, unabhängig vom User
25.10.2015 09:13:55
Marie
Hallo,
ich nutze VBA, um ein Pdf eines Blattes in Excel zu erstellen, was soweit auch funktioniert.
Mein Problem:
Die ursprüngliche Datei ist in einem Ordner gespeichert, in dem der User keine Speicherrechte hat, so dass ich dort das Pdf nicht temporär speichern kann.
Wie kann ich die Datei temporär auf dem Rechner / Laufwerk des Users speichern und das unabhängig vom User ?
Ideal wäre der Desktop des Users, ansonsten ginge auch ein Temp oder anderer Ordner.
Bisher habe ich folgendes, diesen Pfad scheint aber nicht jeder User zu haben - LValue ist dabei ein Zeitstempel:
Filename:="C:\Users\Public\" & ThisWorkbook.Name & "_" & LValue & ".pdf"

Kann mir jemand weiterhelfen ?
LG,
Marie

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:19:06
Hajo_Zi
Hallo Marie,
Sub DesktopPfad()
' Code für Desktop-Pfad von Kl@us-M. (Clever-Forum.de)
Dim WSHShell As Object
Set WSHShell = CreateObject("wscript.Shell")
strDesktopPath = WSHShell.SpecialFolders.Item("Desktop")
Set WSHShell = Nothing
End Sub

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:24:08
Marie
Hallo Hajo,
vielen Dank !
Wie integriere ich das in meinen Code, d.h. was gebe ich dann als Filename an ?
LG,
Marie

AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:26:15
Hajo_Zi
Hallo Marie,
unter Option Explicit
Dim strDesktopPath as String
Im Makro
DesktopPfad
Und der Ordner steht dann auf
strDesktopPath
Gruß Hajo

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:34:53
Marie
Hallo Hajo,
vielen Dank.
Sorry, ich muss nochmal nachfragen, weil ich bei VBA noch ganz am Anfang bin:
Bis jetzt habe ich einen Button, der folgendes Makro aufruft (mit Deiner Zeile am Anfang) und hier geht es um den Filename - ist der Filename dann einfach nur strDesktopPath ... ?
Option Explicit
Sub PrintPdf()
Dim LValue As String
Dim strDesktopPath as String
LValue = Format(Now(), "yyyymmddhhmmss")
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Users\Public\" & ThisWorkbook.Name & "_" & LValue & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
LG,
Marie

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:37:07
Hajo_Zi
Hallo Marie,
dazu musst Du mich nicht Fragen, sondern den der Dir Dein Code vorgeschlagen hat. Ich war es nicht.
Ja auf strDesktopPath steht der Ordner.
Gruß Hajo

AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:45:24
Marie
Hallo,
kann mir jemand anderes hier weiterhelfen ?
LG,
Marie

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:50:06
Hajo_Zi
warum sollte jemand anderes Helfen, wenn Du die gemachten Vorschläge nicht umsetzt. Und Meinst jemand anderes kann es besser und den Vorschlag setzt Du um.
Gruß Hajo

AW: Datei temporär speichern, unabhängig vom User
25.10.2015 09:55:11
Nepumuk
Hallo,
so:
Option Explicit

Public Sub PrintPdf()
    Dim LValue As String
    Dim strDesktopPath As String
    
    LValue = Format(Now(), "yyyymmddhhmmss")
    strDesktopPath = DesktopPath
    
    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=strDesktopPath & "\" & ThisWorkbook.Name & "_" & LValue & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, OpenAfterPublish:=True
    
End Sub

Private Function DesktopPath() As String
    Dim WSHShell As Object
    Set WSHShell = CreateObject("wscript.Shell")
    DesktopPath = WSHShell.SpecialFolders.Item("Desktop")
    Set WSHShell = Nothing
End Function

Gruß
Nepumuk

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 10:07:45
Marie
Hallo Nepumuk,
das ist super - vielen Dank dafür. Ist eine riesen Hilfe !
LG und einen schönen Sonntag,
Marie

AW: Datei temporär speichern, unabhängig vom User
25.10.2015 10:09:29
Marie
Leider gibt es hier auch Leute wie Dich, die nur sich selbst oder ihre Webseite profilieren wollen und an echter Hilfe gar kein Interesse haben - damit verschendest Du nur meine Zeit.

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 10:13:56
Hajo_Zi
ich hatte nur 2 Sachen vorgeschlagen und beide wurden nicht realisiert, da Dein Berater gesagt hat mache es so.
Gruß Hajo

AW: Datei temporär speichern, unabhängig vom User
25.10.2015 10:25:32
Luschi
Hallo Marie,
Deine Vorwürfe gegen über Hajo kann ich in diesem Fall nicht nachvollziehen - auch wenn ich sonst mal mit Hajo nicht einer Meinung bin.
Vielleicht solltest Du Dich in Deiner Freizeit mal mehr mit Vba beschäftigen, statt nur auf vorgefertigte Musterlösungen zu warten.
Gruß von Luschi
aus klein-Paris
PS: ich bin mir sicher, daß Du von Nepumuk's Anwort kaum die Bohne verstehst - Hauptsache es klappt!

Anzeige
AW: Datei temporär speichern, unabhängig vom User
25.10.2015 10:22:40
Schneider
Marie,
Mit der folgende Zeile erhälst du dein gewünschtes Ergebnis:
Filename:=Environ("Public") & "\" & ThisWorkbook.Name & "_" & LValue & ".pdf"
Das Systemkommando "Environ" gibt Inhalte von Systemvariablen zurück, z.B.:
Environ("Public") = Pfad des öffentlichen Ordner
Environ("Temp") = Pfad des temporären Verzeichnis
Environ("Usersprofile") = Pfad des persönlichen Ordners des angemeldeten Nutzer
Gruß, Chris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Temporäre Speicherung von Excel-Dateien unabhängig vom User


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei auf dem Desktop des Users temporär zu speichern, kannst Du VBA verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > "Einfügen" > "Modul").

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

    Option Explicit
    
    Public Sub PrintPdf()
       Dim LValue As String
       Dim strDesktopPath As String
       LValue = Format(Now(), "yyyymmddhhmmss")
       strDesktopPath = DesktopPath()
    
       ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
           Filename:=strDesktopPath & "\" & ThisWorkbook.Name & "_" & LValue & ".pdf", _
           Quality:=xlQualityStandard, _
           IncludeDocProperties:=False, _
           IgnorePrintAreas:=False, _
           OpenAfterPublish:=True
    End Sub
    
    Private Function DesktopPath() As String
       Dim WSHShell As Object
       Set WSHShell = CreateObject("wscript.Shell")
       DesktopPath = WSHShell.SpecialFolders.Item("Desktop")
       Set WSHShell = Nothing
    End Function
  4. Schließe den VBA-Editor und führe das Makro PrintPdf aus.

Mit diesem Code wird die Excel-Datei als PDF auf dem Desktop gespeichert, unabhängig von den Benutzerrechten.


Häufige Fehler und Lösungen

  • Fehler: „Dateipfad nicht gefunden“

    • Lösung: Überprüfe den Pfad, den Du in strDesktopPath verwendest. Stelle sicher, dass der Desktop-Pfad korrekt abgerufen wird.
  • Fehler: „Zugriff verweigert“

    • Lösung: Stelle sicher, dass das Makro die richtigen Berechtigungen hat. Wenn der Desktop nicht verfügbar ist, versuche den Temp-Ordner mit Environ("Temp").

Alternative Methoden

Falls das Speichern auf dem Desktop nicht möglich ist, kannst Du auch den temporären Speicherort verwenden. Hier ist ein Beispiel, wie Du den Temp-Ordner ansteuern kannst:

Filename:=Environ("Temp") & "\" & ThisWorkbook.Name & "_" & LValue & ".pdf"

Diese Methode eignet sich gut, wenn Du eine Excel-Datei auf einem Computer speichern möchtest, wo der Desktop nicht erreichbar ist.


Praktische Beispiele

Hier sind einige Beispiele zur Verwendung des Codes:

  • Speichern der Datei auf dem Desktop:

    Filename:=DesktopPath() & "\" & ThisWorkbook.Name & ".pdf"
  • Speichern der Datei im temporären Verzeichnis:

    Filename:=Environ("Temp") & "\" & ThisWorkbook.Name & ".pdf"
  • Speichern in einem öffentlichen Ordner:

    Filename:=Environ("Public") & "\" & ThisWorkbook.Name & ".pdf"

Diese Beispiele zeigen, wie Du eine Excel-Datei auf verschiedenen Speicherorten ablegen kannst, um sicherzustellen, dass sie immer erreichbar ist.


Tipps für Profis

  • Nutze Option Explicit im VBA-Code, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Teste den Code in einer sicheren Umgebung, um sicherzustellen, dass alle Benutzerrechte und Pfade korrekt sind.
  • Verwende Kommentare im Code, um die Funktionen besser zu erklären, besonders wenn Du mit anderen zusammenarbeitest.

FAQ: Häufige Fragen

1. Wie kann ich die PDF-Datei in einem anderen Format speichern?
Du kannst den Type-Parameter in der ExportAsFixedFormat-Methode ändern, um verschiedene Formate zu verwenden, jedoch ist PDF der gängigste.

2. Was mache ich, wenn der Desktop-Pfad nicht funktioniert?
Nutze stattdessen Environ("Temp") oder Environ("Public"), um andere Speicherorte zu verwenden, die für alle Benutzer zugänglich sind.

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