Hallo zusammen,
ich habe sehr viele Dateien im Format .sxw die ich zu PDF umwandeln muss. Ich habe für StarOffice das Makro von Danny Brewer gefunden was zu 99% das tut, was ich brauche (link zu sourceforge).
Leider durchsucht das Makro nur einen Ordner und keine Unterordner. Das Makro soll jedoch in die einzelnen Unterordner gehen und jede .sxw Datei umwandeln und im gleichen Ordnerpfad die .pdf Datei ablegen.
Ich habe nur sehr geringe Kenntnisse im VBA-Programmieren. Nach langer Recherche habe ich herausgefunden, dass es mit der Funktion DIR nicht ohne Weiteres möglich ist die Unterordner zu durchsuchen.
Ich habe versucht aus dem Code von Danny Brewer die Stücke rauszusuchen, die ich ändern muss. Folgende zwei müssten es sein:
Hier zählt er die Anzahl an Dateien die umgewandelt werden sollen (CSourceFolder ist der Ordner und LCase(cSourceType) ist das Dateiformat nach dem er suchen soll)
Function CountSourceFiles()
nNumFiles = 0
cFile = Dir$( cSourceFolder + "/*." + LCase(cSourceType) )
Do While cFile <> ""
nNumFiles = nNumFiles + 1
cFile = Dir$
Loop
CountSourceFiles() = nNumFiles
End Function
Hier findet die eigentliche Konvertierung statt:
' This is the actual conversion loop.
nFileNum = 0
cFile = Dir$( cSourceFolder + "/*." + LCase(cSourceType) )
Do While cFile <> "" And (Not bInterrupted)
' Build the complete pathname to the source document.
cSourceName = cSourceFolder + "/" + cFile
' Open the source document.
oDoc = StarDesktop.loadComponentFromURL( ConvertToUrl( cSourceName ), "_blank", 0,_
oImportOptions )
' Build the name of the new document -- with new suffix.
cDestName = Left( cFile, Len( cFile ) - 4 )
cDestName = cDestName + "." + LCase(cDestType)
' Build the URL of the new document.
cDestURL = ConvertToUrl( cDestFolder + "/" + cDestName )
' Save the document in the new destination format.
oDoc.storeToURL( cDestURL, oExportOptions )
' Update some stuff on the screen to keep the user entertained.
oFld3.setText( "Closing..." )
' Close the document.
oDoc.dispose()
' Get name of next file to convert.
cFile = Dir$
Loop
Hat jemand eine Idee wie ich den Code umschreiben müsste um die Unterordner zu durchsuchen? Folgenden Ansatz hatte ich aber der klappte nicht:
Vielen Dank schon im Vorraus
Michel
|