von ehvbs » Do, 13.07.2006 13:06
Hallo Toxitom,
vielen Dank für die Ermunterung. VBScript ist der 'kleine Bruder' von VB
und VBA (ein Basic-Dialekt, der von der Kommandozeile oder im IExplorer
verwendet werden kann).
Hier ist mein Code
Code: Alles auswählen
Const cbSleep0 = False
Const cbSleep1 = False
Const cbSleep2 = False
Dim oFS : Set oFS = CreateObject( "Scripting.FileSystemObject" )
Dim sDir : sDir = oFS.GetAbsolutePathName( ".\Output" )
Dim oSrv : Set oSrv = CreateObject( "com.sun.star.ServiceManager" )
Dim oDTop : Set oDTop = oSrv.createInstance( "com.sun.star.frame.Desktop" )
Dim oCRef : Set oCRef = oSrv.createInstance( "com.sun.star.reflection.CoreReflection" )
Dim oFile, sFSpec, oOODoc, aArgs()
For Each oFile In oFS.GetFolder( sDir ).Files
sFSpec = oFile.Path
If "odt" = LCase( oFS.GetExtensionName( sFSpec ) ) Then
WScript.Echo sFSpec, oFS.GetExtensionName( sFSpec )
Set oOODoc = oDTop.loadComponentFromURL( ConvertToUrl( sFSpec ) _
, "_blank" _
, 0 _
, aArgs _
)
If cbSleep0 Then WScript.Sleep 2000
sFSpec = oFS.GetParentFolderName( sFSpec ) + "\" + oFS.GetBaseName( sFSpec ) + ".pdf"
savePDF oSrv, oOODoc, sFSpec
If cbSleep1 Then WScript.Sleep 2000
oOODoc.Close True
If cbSleep2 Then WScript.Sleep 2000
End If
Next
Sub savePDF( oSrv, oOODoc, sFSpec )
Dim aProps( 1 ), oProp0, oProp1, vRet
Set oProp0 = oSrv.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
oProp0.Name = "FilterName"
oProp0.Value = "writer_pdf_Export"
Set aProps( 0 ) = oProp0
Set oProp1 = oSrv.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
oProp1.Name = "CompressMode"
oProp1.Value = 0
Set aProps( 1 ) = oProp1
vRet = oOODoc.storeToURL( ConvertToUrl( sFSpec ), aProps )
End Sub
Function ConvertToUrl( sFSpec )
ConvertToUrl = "file:///" + Replace( sFSpec, "\", "/" )
End Function
Der Fehler tritt - nach etwa drei erfolgreich bearbeiteten Dateien - bei dem
Aufruf von "loadComponentFromURL" auf; die Fehlermeldung (sicher
von Windows) lautet:
Der Remoteservercomputer ist existiert nicht oder ist nicht verfügbar
Wenn ich die cbSleep*-Konstanten alle auf True setzte, zwischen den
Aktionen also ca 2 Sekunden warte, läuft das Script durch (mit ca 10
Dateien getestet).
Vielen Dank
ehvbs
Hallo Toxitom,
vielen Dank für die Ermunterung. VBScript ist der 'kleine Bruder' von VB
und VBA (ein Basic-Dialekt, der von der Kommandozeile oder im IExplorer
verwendet werden kann).
Hier ist mein Code
[code]
Const cbSleep0 = False
Const cbSleep1 = False
Const cbSleep2 = False
Dim oFS : Set oFS = CreateObject( "Scripting.FileSystemObject" )
Dim sDir : sDir = oFS.GetAbsolutePathName( ".\Output" )
Dim oSrv : Set oSrv = CreateObject( "com.sun.star.ServiceManager" )
Dim oDTop : Set oDTop = oSrv.createInstance( "com.sun.star.frame.Desktop" )
Dim oCRef : Set oCRef = oSrv.createInstance( "com.sun.star.reflection.CoreReflection" )
Dim oFile, sFSpec, oOODoc, aArgs()
For Each oFile In oFS.GetFolder( sDir ).Files
sFSpec = oFile.Path
If "odt" = LCase( oFS.GetExtensionName( sFSpec ) ) Then
WScript.Echo sFSpec, oFS.GetExtensionName( sFSpec )
Set oOODoc = oDTop.loadComponentFromURL( ConvertToUrl( sFSpec ) _
, "_blank" _
, 0 _
, aArgs _
)
If cbSleep0 Then WScript.Sleep 2000
sFSpec = oFS.GetParentFolderName( sFSpec ) + "\" + oFS.GetBaseName( sFSpec ) + ".pdf"
savePDF oSrv, oOODoc, sFSpec
If cbSleep1 Then WScript.Sleep 2000
oOODoc.Close True
If cbSleep2 Then WScript.Sleep 2000
End If
Next
Sub savePDF( oSrv, oOODoc, sFSpec )
Dim aProps( 1 ), oProp0, oProp1, vRet
Set oProp0 = oSrv.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
oProp0.Name = "FilterName"
oProp0.Value = "writer_pdf_Export"
Set aProps( 0 ) = oProp0
Set oProp1 = oSrv.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
oProp1.Name = "CompressMode"
oProp1.Value = 0
Set aProps( 1 ) = oProp1
vRet = oOODoc.storeToURL( ConvertToUrl( sFSpec ), aProps )
End Sub
Function ConvertToUrl( sFSpec )
ConvertToUrl = "file:///" + Replace( sFSpec, "\", "/" )
End Function
[/code]
Der Fehler tritt - nach etwa drei erfolgreich bearbeiteten Dateien - bei dem
Aufruf von "loadComponentFromURL" auf; die Fehlermeldung (sicher
von Windows) lautet:
Der Remoteservercomputer ist existiert nicht oder ist nicht verfügbar
Wenn ich die cbSleep*-Konstanten alle auf True setzte, zwischen den
Aktionen also ca 2 Sekunden warte, läuft das Script durch (mit ca 10
Dateien getestet).
Vielen Dank
ehvbs