von Toxitom » Mi, 17.12.2003 09:25
Hallo CB,
interessantes Thema, aber das Makro hat so seine Macken. Wie hast du das denn erzeugt? viel mit dem Makrorecorder?
Also, ich hab mal ein bischen repariert, so dass es funktioniieren sollte. Es wäre sicherlich noch deutlich zu verbessern.
1. Es fehlt die Initialisierung der Argumente zum Öffnen. Muss ein array sein.
2. Den ganzen "dispatcher" - Quatsch kannst du weglassen. Nutze lieber die native Befehle.
3. Der Desktop wird mit "Stardesktop" angesprochen.
4. Eigentlich bräuchtest du keine zwei Dokumentenmodelle ("dokument_in und Dokument_out").
5. Nach dem Speichern solltest du das Dokument auch wieder schliessen.
Anbei der geänderte Code. Ich habs mit einer Datei getestet. hat funktioniert. Deine Codefragmente habe ich nur auskommentiert.
Code: Alles auswählen
Sub Main
Dim Dispatcher As Object
Dim Datei As String
Dim InputPath As String
Dim OutputPath As String
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim z As Integer
rem Variablen initialisieren
dim args()
Dim args2(0) as new com.sun.star.beans.PropertyValue
Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
InputPath = "file:///X:/sxc/"
OutputPath = "file:///X:/xls/"
a = 0
b = 0
c = 0
z = 0
While a < 2
b = 0
While b < 10
c = 0
While c < 10
Datei = "File" & a & b & c
If FileExists(InputPath & Datei & ".sxc") Then
Document_in = StarDesktop.LoadComponentFromURL(InputPath & Datei & ".sxc", "_blank", 0, args())
'Dispatcher.executeDispatch(Document_in, ".uno:Open", "", 0, Array())
'Set Document_out = ThisComponent.CurrentController.Frame
'args2(0).Name = "URL"
'args2(0).Value
sUrl = OutputPath & Datei & ".xls"
args2(0).Name = "FilterName"
args2(0).Value = "MS Excel 97"
Document_in.storeAsUrl(sUrl, args2())
'Dispatcher.executeDispatch(document_in, ".uno:SaveAs", "", 0, args2())
MsgBox "Die Datei " & Datei & ".sxc wurde als " & Datei & ".xls unter " & OutputPath & " gespeichert." , 64, "Hinweis"
Document_in.close(-1)
z = z + 1
EndIf
c = c + 1
Wend
b = b + 1
Wend
a = a + 1
Wend
MsgBox "Es wurden " & z & " Dateien umgewandelt.", 64, "Abschluss"
End Sub
Hoffe, es hilft
Thomas
Hallo CB,
interessantes Thema, aber das Makro hat so seine Macken. Wie hast du das denn erzeugt? viel mit dem Makrorecorder?
Also, ich hab mal ein bischen repariert, so dass es funktioniieren sollte. Es wäre sicherlich noch deutlich zu verbessern.
1. Es fehlt die Initialisierung der Argumente zum Öffnen. Muss ein array sein.
2. Den ganzen "dispatcher" - Quatsch kannst du weglassen. Nutze lieber die native Befehle.
3. Der Desktop wird mit "Stardesktop" angesprochen.
4. Eigentlich bräuchtest du keine zwei Dokumentenmodelle ("dokument_in und Dokument_out").
5. Nach dem Speichern solltest du das Dokument auch wieder schliessen.
Anbei der geänderte Code. Ich habs mit einer Datei getestet. hat funktioniert. Deine Codefragmente habe ich nur auskommentiert.
[code]Sub Main
Dim Dispatcher As Object
Dim Datei As String
Dim InputPath As String
Dim OutputPath As String
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim z As Integer
rem Variablen initialisieren
dim args()
Dim args2(0) as new com.sun.star.beans.PropertyValue
Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
InputPath = "file:///X:/sxc/"
OutputPath = "file:///X:/xls/"
a = 0
b = 0
c = 0
z = 0
While a < 2
b = 0
While b < 10
c = 0
While c < 10
Datei = "File" & a & b & c
If FileExists(InputPath & Datei & ".sxc") Then
Document_in = StarDesktop.LoadComponentFromURL(InputPath & Datei & ".sxc", "_blank", 0, args())
'Dispatcher.executeDispatch(Document_in, ".uno:Open", "", 0, Array())
'Set Document_out = ThisComponent.CurrentController.Frame
'args2(0).Name = "URL"
'args2(0).Value
sUrl = OutputPath & Datei & ".xls"
args2(0).Name = "FilterName"
args2(0).Value = "MS Excel 97"
Document_in.storeAsUrl(sUrl, args2())
'Dispatcher.executeDispatch(document_in, ".uno:SaveAs", "", 0, args2())
MsgBox "Die Datei " & Datei & ".sxc wurde als " & Datei & ".xls unter " & OutputPath & " gespeichert." , 64, "Hinweis"
Document_in.close(-1)
z = z + 1
EndIf
c = c + 1
Wend
b = b + 1
Wend
a = a + 1
Wend
MsgBox "Es wurden " & z & " Dateien umgewandelt.", 64, "Abschluss"
End Sub [/code]
Hoffe, es hilft
Thomas