Guten Morgen,
es tritt doch noch ein Zugriffsproblem auf, aber erst, nachdem einige Dateien verschoben wurden. Kann ich diesen Thread für eine weitere Frage nutzen oder ist er abgeschlossen?
Viele Gruße
Guten Morgen,
ich hoffe, das Zitieren ist so gemeint.
Alles lief prima. Aber dann traten plötzlich Zugriffsprobleme auf.
Vielen Dank für Deine/Eure Hilfe!!!Das "Überspringen" von Dokumenten, die eventuell einen Replizierkonflikt haben, ist im Code-Ausriss nicht enthalten.
- Es wird, nachdem einige Dateien erfolgreich verschoben wurden, plötzlich ein Verzeichnis mit dem Namen aus "neuesFile" angelegt. Dann bricht die Aktion mit Fehler ab.
- Außerdem hatte ich mitunter auch die Fehlermeldung, dass "filename = Dir$()" nicht ausgeführt werden konnte.
- Muss ich zum Abschluss die verwendeten Dateien altesFile und neuesFile freigeben? "Reset" ist sicher nicht richtig, oder?
Anmerkung: Ich muss jede Datei sofort aus dem Quellverzeichnis löschen, weil ich sonst das wichtige Merkmal "SchluesselNr" verliere. Diese benötige ich für den neuen Namen.
Sub Click(Source As Button)
' Im Original stehen hier Deklarationen
Set vc = view.AllEntries
Set entry = vc.GetFirstEntry
Set doc = entry.Document
pageSeparator = 2 'Neue Seite
Dim altesFile, neuesFile As String
Dim pathname As String
Dim filename As String
'Es folgt das Muster des Dokumentnamen der Form: "Datum_Uhrzeit-Dokumentname.pdf"
'fuer den Befehl: filename = Dir$(pathname,0)
pathname = "C:\Users\xxxxxx\Desktop\*Dokumentname.pdf*"
Do Until doc Is Nothing
Call uiview.SelectDocument(doc)
SchluesselNr = doc.SchluesselNr(0)
Call uiview.Print(1, , , ,pageSeparator ,"Form_des_Dokuments", , , ,"PDF24")
filename = Dir$(pathname,0)
altesFile = "C:\Users\xxxxxx\Desktop\" & filename
filename = Dir$()
neuesFile = "E:\ZIELVERZEICHNIS\" & SchluesselNr & "_Export_Dokument.pdf"
Name altesFile As neuesFile
Call uiview.DeselectAll
Set entry = vc.GetNextEntry(entry)
Set doc = entry.Document()
Loop
End Sub
Call uiview.Print
die Dokumente druckt und erst mal in die Druckerqueue schiebt.Ja, sehe ich auch so. Das ist ein timing Problem.
Zitatdie Dokumente druckt und erst mal in die Druckerqueue schiebt.Ja, sehe ich auch so. Das ist ein timing Problem.
Versuche s mal mit SLEEP https://help.hcltechsw.com/dom_designer/10.0.1/basic/LSAZ_SLEEP.html (https://help.hcltechsw.com/dom_designer/10.0.1/basic/LSAZ_SLEEP.html)
Ist nicht schön, könnte aber helfen.
Da soll er schauen, wenn das fertig ist. Dann kann er mittels einem 2. Button den "Rest" erledigen lassen.So wie ich es verstanden habe, funktioniert das nicht, weil das erzeugte Dokument keinen Bezug zum NotesDoc hat.
Ach so, stimmt.ZitatDa soll er schauen, wenn das fertig ist. Dann kann er mittels einem 2. Button den "Rest" erledigen lassen.So wie ich es verstanden habe, funktioniert das nicht, weil das erzeugte Dokument keinen Bezug zum NotesDoc hat.
Man kann ja gerade keinen Namen für das PDF vergeben.
Du kannst Alles drucken. Dann hast Du einen Haufen PDF, weißt aber nicht, zu welchen Doc die gehören.
Um das wirklich "rund" zu bekommen, müsste man die Windows Prozesse abfragen. Das ist zwar grundsätzlich möglich, aber eine ganz andere Hausnummer.
Das ist ja das dumme, dass der Print keinen Rückgabewert hat, den man abfragen könnte, um dann entsprechend zu reagieren.
Kann das mit der Definition von "pathname" am Anfang zu tun haben und ich sehe den "Wald vor Bäumen" nicht?
sleep(2)
filename = Dir$(pathname,0)
ZitatKann das mit der Definition von "pathname" am Anfang zu tun haben und ich sehe den "Wald vor Bäumen" nicht?
Wo hast Du das sleep denn eingebaut?Codesleep(2) filename = Dir$(pathname,0)
Und, man kann ja eben nicht den Pfad oder Dateinamen mitgeben. Deshalb ja der Stunt hier.
Auch wenn das Thema quasi "abgeschlossen" ist noch eine Ergänzung, weil das vielleicht öfter gebraucht wird und eine etwas mehr generische Lösung aus meiner Sicht noch offen ist.Und, man kann ja eben nicht den Pfad oder Dateinamen mitgeben. Deshalb ja der Stunt hier.
Kann man in diesem Fall (und auch bei den meisten anderen PDF bzw. Print-2-File-Druckern) doch. Da er erst sehr spät mit der Info kam, dass er über PDF24 druckt war die Herkunft der merkwürdigen Dateinamen zu Beginn seiner Frage für mich nicht erkennbar.
Diese Dateinamen werden über selbst konfigurierbare Variablen nach Regeln gesteuert, wenn man da den Default-Wert lässt kommen halt kryptische Dateinamen mit Datum/Uhrzeit bei 'raus (siehe Screenshot). Im Fall von PDF24 kann man aber problemlos einen Wunschdateinamen per eigener Environment Variable übergeben. Siehe gleicher Screenshot, rote Umrandung.
Wenn man jetzt einfach vor jedem Aufruf des Druckertreibers die Variable neu setzt (ggf. die künstliche Pause (Sleep) noch etwas anpassen) ist die ganze Umbenennerei unnötig und Geschichte.
Das Setzen einer Umgebungsvariable ist allerdings nicht ganz so trivial, da das aber kein Problem von "Notes" ist habe ich mal geschaut, wie das bei Office/VBA & Co. läuft, die meisten API-Sachen sind ja nahezu identisch. Gefunden habe ich jemanden mit genau dem gleichen Problem, nämlich Druckausgabe als PDF und vergeben von Dateinamen.
Die "fertige" Lösung steht ziemlich weit am Ende, kann man aber m.E. mit kleinem Aufwand für LotusScript umschreiben (mir fehlt leider gerade die Zeit dafür).
Quelle: https://www.herber.de/forum/archiv/1680to1684/1681193_umgebungsvariable_setzen_per_VBA_in_64bit.html
HTH
Carsten
In LotusScript setze ich die Environment-Variablen, z.B.:
Call Session.Setenvironmentvar("MeinPDF24_verzeichnis", Win_Pfad, True)
Wenn es funktionierte: Könnte ich eine Environment-Variable für einen, in der Loop wechselnden, Dateinamen immer neu setzen?