Clever-Excel-Forum

Normale Version: DefaultFilePath mit Makro ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Folgende Ausgangslage; ein Berechnungs-Excel ist auf einem schreibgeschütztem Server gespeichert. Nutzer speichern das Excel neu auf ihren lokalen PC, füllen das aus etc.

Wenn Sie fertig sind, hab ich ein Makro geschrieben, welches über einen Klicken auf ein Bild aus den richtigen Arbeitsblätter ein PDF erstellt. Um das PDf anzuzeigenn, muss dieses jedoch zuerst irgendwo abgespeichert werden. Da die Datei vom schreibgeschützten Server stammt, kann das PDF dort nicht gespeichert werden, das Makro versucht es dort abzuspeichern, obwohl die Datei nun lokal auf dem PC des Nutzers liegt.

Wie kann ich nun den Speicherort für das PDF-File ändern, dass es den Speicherort des neu gespeicherten Excel-File übernimmt?

Hier der Code des Makro:

Sub Druckvorschau_Klicken()

    'Druckvorschau_Klicken Makro
    Worksheets(Array("Eingabe", "Lastfall A -20°C", "Lastfall B +5°C", "Lastfall C -5°C", "Lastfall D -5°C")).PrintPreview

End Sub
Sub PDF_Klicken()

    Application.DefaultFilePath = Application.ActiveWorkbook.path
    
    'Setzt die einzelnen Blätter aktiv
    ThisWorkbook.Sheets(Array("Eingabe", "Lastfall A -20°C", "Lastfall B +5°C", "Lastfall C -5°C", "Lastfall D -5°C")).Select
    
    'Erstellt PDF der selektierten Blätter
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, OpenAfterPublish:=True
    
    'Setzt "Eingabe" wieder aktiv
    Sheets("Eingabe").Select
    
End Sub

Wie zu sehen, hab ich es mit dem Application.DefaultFilePath probiert, jedoch erfolglos.

Das eigentliche Problem ist, dass ich keinen fixen Pfad vorgeben kann, das jeder "Dokumente"-Ordner des Nutzers seinen Benutzername beinhaltet.
Hallo,

Du brauchst doch die Zeile
 Application.DefaultFilePath = Application.ActiveWorkbook.path
nur wegzulassen. Wink

Gruß Uwe
Dann versucht das Makro die PDF-Datei auf dem schreibgeschützten Server zu speichern und das Makro schlägt fehlt, weil das der usprüngliche DefaultFilePath war.
(09.01.2019, 14:05)Lopezoli schrieb: [ -> ]Dann versucht das Makro die PDF-Datei auf dem schreibgeschützten Server zu speichern und das Makro schlägt fehlt, weil das der usprüngliche DefaultFilePath war.

Auch bei einem neu gestarteten Excel?

Gruß Uwe
Willst Du damit sagen, dass das ein Problem ist

Zitat:Das eigentliche Problem ist, dass ich keinen fixen Pfad vorgeben kann, das jeder "Dokumente"-Ordner des Nutzers seinen Benutzername beinhaltet.
Hallo,

MsgBox Environ("USERPROFILE")
@Flotter Feger: Das ergibt bei mir z.B. den falschen Pfad.
Liegt zwar an mir, wie ich den Rechner "verkonfiguriert" habe, aber das machen andere auch.

Eine andere Variante, mit der ich noch keine Probleme hatte

PHP-Code:
Function GetDocumentPathC() As String

Dim WshShell 
As Object
    
    Set WshShell 
CreateObject("WScript.Shell")
    GetDocumentPathC WshShell.SpecialFolders("MyDocuments")
    
End 
Function 

PS Ich habe noch eine andere Variante. Die ist dann mit APIs und wo wir dem OP nicht mal google zumuten, lass ich die lieber stecken.

PS 1 Environ("Userprofile") ist schon richitg, aber Environ("Userprofile") & "\Documents" ist bei mir falsch
(09.01.2019, 14:08)Kuwer schrieb: [ -> ]
(09.01.2019, 14:05)Lopezoli schrieb: [ -> ]Dann versucht das Makro die PDF-Datei auf dem schreibgeschützten Server zu speichern und das Makro schlägt fehlt, weil das der usprüngliche DefaultFilePath war.

Auch bei einem neu gestarteten Excel?

Ja, auch bei Restart bleibt der Pfad. Ich hatte es verwechselt mit ChDir und ChDrive, welche dann den (geänderten) CurDir ergeben, welcher sich nach Neustart wieder auf den DefaultFilePath einstellt. Blush
Wenn Du Dich nicht unbeliebt machen willst, darfst Du den DefaultFilePath für andere Benutzer niemals einfach ungefragt ändern!

Gruß Uwe