Seite 1 von 1

[gelöst] PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Mo 8. Aug 2022, 10:11
von nostromo
Hallo LO-Makro-Experten!

Ich habe bereits tolle Unterstützung und Lösungen von euch bekommen - herzlichen Danke dafür!
... dennoch komme ich aktuell nicht in meinem Projekt weiter.

Mit einem Makro exportiere ich bereits ein Calc-Sheet als PDF auf einen Speicherort z.B. "W:\muster\projekt\dateiname.pdf".
Nun stellt sich heraus das es sinnvoll wäre, wenn dieses PDF zusätzlich auch auf dem Desktop des Windows-Users gespeichert wird.

Der eine Lösungsansatz ist die Datei erneut zu exportieren - daher das bestehenden Makro mit abweichenden Pfadangabe die PDF-Datei ein zweites Mal zu erstellen. ... das habe ich auch hinbekommen.

Da die Lösung weder besonders effektiv noch besonders "schnell" ist - User haben teilweise sehr schwache Notebooks,
würde ich gerne ein Makro nutzen, welches die bereits exportierte PDF-Datei von:

Code: Alles auswählen

"W:\muster\projekt\Dateiname.pdf"
nach

Code: Alles auswählen

"C:\[ENVIRON]\muster\projekt\dateiname.pdf"
.. kopiert.

Der Speicherpfad ist bereits in einer URL-String verfügbar... hier der original-String:

Code: Alles auswählen

 file:///W:/Metrologie/DEVICES/DEB_000002/AB666666/SRA_0000815/ELM_SRA_815-W1_2022-8-8_666666_2-19882-44781.PDF
Mir ist bekannt, dass hier aufgrund des USER-Speichortes mit einer Umgebungsvariable (environ) im Makro umgegangen werden muss.

Habe auch schon ein paar Experimente damit gemacht. Es gibt aber wohl auch "Merkwürdigkeiten" aufgrund des installierten OneDrive, welcher die Pfade irgendwie "manipuliert" .. oder auch zwischen meinen Ohren :-)

Habt ihr da ggf. einen Hinweis für mich wie ich das umsetzen muss - zunächst danke für die Mühe!

Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Mo 8. Aug 2022, 11:45
von gogo

Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 09:31
von nostromo
@gogo

die Funktion habe ich soweit verstanden und getestet.

Mein Problem ist derzeit noch, dass ich das Zielverzeichnis (DEVICES.temp) des Users vorhanden sein muss.
Ist es nicht verfügbar kommt es zu einer Fehlermeldung (BASIC-Laufzeitfehler. Pfad nicht gefunden)

Code: Alles auswählen

Filecopy sDatei_url_Name, Environ(sUmgebung) & "\DEVICES.temp\" & sELM_Datei_Name & ".pdf"
Ziel-String sieht so aus:
C:\Users\nostromo\DEVICES.temp\ELM_SRA_815-W1_2022-8-8_666666_2-24302-44781.pdf

Wie kann ich das lösen? Danke

Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 09:56
von karolus
Hallo

du hast in deinem Zielpfad den literalen Eintrag "\DEVICES.temp\" und möchtest jetzt wissen wie du eine Fehlermeldung aufgrund dessen abfängst :?: gehts noch?

in Basic gibts tatsächlich den Befehl mkdir zum erstellen eines Verzeichniss[pfads]

Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 10:11
von nostromo
@karolus
super Antwort - kann ich echt viel mit anfangen!

Was auch immer das für ein Problem sein mag - es funktioniert ja, wenn das Verzeichnis zuvor schon besteht.

Danke für die Mühe einer etwas weniger emotionalen Antwort, wenn du noch magst!

Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 10:17
von karolus
Wie offensichtlich muss eine Fehlermeldung denn sein, damit $Basic-held daraus die offensichtlichen Schlüsse zieht.?

Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 10:25
von nostromo
@karolus - geh bitte aus diesem Thread - danke für deine Meinung - kann nichts damit anfangen!
..hatte bislang ein anderes Bild von dir - habe ich mich wohl getäuscht :-(

[gelöst] Re: PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 17:07
von nostromo
Ich habe die Lösung für mein "Problem" mit Hilfe und trotz meines kleine "$Basic-held" - Know-how zurechtgefummelt.
Ob das wirklich alles soooo 100% richtig ist - sicherlich nicht, wenn Experten einen Blick darauf werfen :-)

Code: Alles auswählen

Sub mELM_exportPDF()

	oELM_Doc = ThisComponent.CurrentController.Frame
	oELM_Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	sDatei_url_Name = ConvertToUrl (sDatei_pdf_Name)

	dim args1(1) as new com.sun.star.beans.PropertyValue
		args1(0).Name = "URL"
		args1(0).Value = sDatei_url_Name
		args1(1).Name = "FilterName"
		args1(1).Value = "calc_pdf_Export"

	oELM_Dispatcher.executeDispatch(oELM_Doc, ".uno:ExportDirectToPDF", "", 0, args1())

	REM PDF wird zusätzlich in das lokal Verzeichnis "DEVICES.temp" kopiert
	mkdir (Environ(sUmgebung) & sTrenner & "DEVICES.temp")
	
	sZielDatei_pdf_Name = Environ(sUmgebung) & sTrenner & "DEVICES.temp" & sTrenner & sELM_Datei_Name & ".pdf"
	sZielDatei_url_Name = ConvertToUrl( sZielDatei_pdf_Name )

	FileCopy ( sDatei_url_Name, sZielDatei_url_Name )
		
End Sub

Das obige Makro habe ich unter Win10pro und unter opensuse (KDE/plasma) getestet - es funktioniert!
LO 6.4.4.2 (exe bzw rpm)

Es ist scheinbar kein Problem zu sein, wenn "mkdir" angewendet wird, obwohl das Verzeichnis bereits besteht.
...ja, ich habe gelesen, dass auch geprüft werden kann ob eine Verzeichnis schon besteht.

Danke!

Re: [gelöst] PDF per Makro von "A" nach "B" unter Windows kopieren?

Verfasst: Di 9. Aug 2022, 17:39
von gogo
sofern Environ(sUmgebung) eine gültige Pfadangabe ist und Du dort Schreibrechte hast, solltest das ok sein...