Aus einer Vorlage soll ein Serienbrief erstellt werden und auf verschiedenen Druckern ausgegeben werden. Dazu habe ich ein Makro geschrieben und es in einem Dokument gespeichert. Das Makro liest die benötigten weiteren Parameter aus einer Datei aus und wurde dem Ereignis "Dokument öffnen" zugewiesen. Das klappt im Debug Modus einwandfrei.
Nun will ich das Dokument aus der Kommandozeile starten. OO startet, das Makro läuft auch los, generiert den Serienbrief in eine Datei und hängt dann. Klicke ich nun in eines der Menüs läuft das Makro wie geplant weiter - soll aber ohne Benutzereingriffe laufen.
Wer kann mir einen Tipp geben - was mach ich falsch ???
Sub AutoOpen()
Dim oDocument As Object
oDocument = StarDesktop.currentComponent
Dim InpHnd As Integer
Dim WrkDoc As String ' Arbeitsdokument
Dim MrgSrc As String ' Serienbrief - Datenquelle
Dim WrkMac As String ' abzuarbeitendes Makro
InpHnd = FreeFile
Open Parameterfile For Input As InpHnd
Line Input #InpHnd, WrkDoc
Line Input #InpHnd, MrgSrc
Line Input #InpHnd, WrkMac
Close #InpHnd
WrkMac = UCase(WrkMac)
If WrkMac = "ONLYPRINT" or WrkMac = "ONLYTIFF" then
Dim KeyName As String
Dim ValName As String
GlobalScope.BasicLibraries.LoadLibrary("ImportWizard")
KeyName = "Software\Microsoft\Windows NT\CurrentVersion\Windows"
ValName = "DEVICE"
Drucker = QueryValue(HKEY_CURRENT_USER, KeyName, ValName)
Drucker = Mid(Drucker, 1, Instr(1, Drucker, ",") -1)
End If
If WrkMac = "ONLYPRINT" or WrkMac = "ONLYTIFF" then
Dim MyMerge
MyMerge = createunoservice("com.sun.star.text.MailMerge")
MyMerge.DataSourceName = "MySource"
MyMerge.DocumentURL = ConvertToURL(WrkDoc)
MyMerge.CommandType = 0
MyMerge.Command = "Tab"
MyMerge.OutputType = 2
MyMerge.OutputUrl = ConvertToUrl("C:\TEMP")
MyMerge.Filenameprefix = "Serienbrief"
MyMerge.execute (array())
End If
' Hängt hier - Eine MsgBox hilft hier weiter - löst aber mein Problem nicht
Select Case WrkMac
Case "ONLYPRINT"
shell (SOFFICE, MINIBACK, "-pt " + Drucker + " " + Datei)
Case "ONLYTIFF"
shell (SOFFICE, MINIBACK, "-pt " + TiffDrucker + " " + Datei)
Case Else
MsgBox "Das angeforderte Makro " + WrkMac + " ist nicht definiert !"
End Select
Back1:
Wait (100)
On Error Goto Back1
oDocument.Close(true)
End Sub