Makro hängt nach Erstellung von Serienbrief

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro hängt nach Erstellung von Serienbrief

von rkwiatek » Di, 10.04.2007 10:08

Inzwischen habe ich das Makro mit StarOffice 8 getestet - und es funktioniert.

von rkwiatek » Mo, 09.04.2007 22:14

Zuerst einmal vielen Dank für Deinen Tip. Das hilft mir aber nicht weiter, weil sich am Verhalten des Makros damit absolut nichts ändert. Anstelle der Msgbox hab ich demzufolge
oDocument.currentcontroller.frame.containerwindow.toFront
benutzt. Mein Dokument stand auch vorher schon "toFront". Reinklicken in das Fenster hilft auch nicht. Ich muss in eines der Menüs (egal welches) klicken, dann rennt mein Makro weiter.

Mein eigentliches Problem ist, das ggf. Ausgaben auf mehreren Druckern erfolgen müssen und diese zugewiesen werden müssen. Mit
SetPrinter
und später
MyMerge.OutputType = 0 ' Drucker
komme ich aber auch nicht zum gewünschten Ergebnis (druckt permanent auf dem Standardrucker und ignoriert meine Zuweisung auf andere Drucker). Deshalb bin ich ausgewichen auf
MyMerge.OutputType = 1 ' Datei
und auf den Druck über "shell SOFFICE -pt <%2> <%1>" und das klappt auch viel besser, ist vielleicht aber doch ein Sackgasse. Meine Erfahrungen sind vielleicht doch zu sehr durch "winzigweich" geprägt. Und da komm ich momentan noch nicht wirklich drüber hinaus.

von Stephan » Mo, 09.04.2007 20:50

Wer kann mir einen Tipp geben - was mach ich falsch ???


Ich kann bei kurzer Betrachtung keinen Fehler erkennen, die MsgBox deutet aber darauf hin das es um ein Fokus-Problem gehen könnte.
Du solltest also mal schauen welches Fenster den Fokus hat, nachdem Du OK in der MsgBox gklickt hast, und notfalls diesem Fenster den Fokus innerhalb des Codes zwangweise zuordnen, in etwa:

Code: Alles auswählen

<Dokumentobjekt>.currentcontroller.frame.containerwindow.toFront 


Gruß
Stephan

Makro hängt nach Erstellung von Serienbrief

von rkwiatek » Mo, 09.04.2007 17:37

Problem:
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

Nach oben