von junmod » Do, 14.06.2012 15:14
Hallo theindless,
hier mal mein Makro:
Code: Alles auswählen
REM ***** BASIC *****
Sub BestellungSpeichernUndVersenden
REM Definition der Variablen
Dim document as Object
Dim dispatcher as Object
Dim stringname as String
Dim PDFempfText as String
Dim ODScalc as Object
Dim strAttPfad As String
Calc = ThisComponent
Sheet = Calc.Sheets(0)
REM Bestellnummer finden
Cell = Sheet.GetCellRangeByName("AE9")
StringName = Cell.String
REM Seitenzahl ermitteln
CCell = Sheet.GetCellRangeByName("AG10")
ZStringName = CCell.String
REM Empfängername finden
CCCell = Sheet.GetCellRangeByName("A10")
PDFempfString = CCCell.String
REM Dokumentenzugriff
document = ThisComponent.CurrentController.Frame
dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
REM Wenn Bestellung 1-seitig
If ZStringName = "0" then
REM Druckbereich für 1 Seite
dim args121(1) as new com.sun.star.beans.PropertyValue
args121(0).Name = "Nr"
args121(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args121())
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
REM Ausdruck Seite 1
dim args99(3) as new com.sun.star.beans.PropertyValue
args99(0).Name = "Copies"
args99(0).Value = 1
args99(1).Name = "Collate"
args99(1).Value = true
args99(2).Name = "Selection"
args99(2).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args99())
REM PDF-Export
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "URL"
args11(0).Value = "file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf"
args11(1).Name = "FilterName"
args11(1).Value = "calc_pdf_Export"
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args11())
REM Druckbereich entfernen
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array()
REM Wenn Bestellung 2-seitig
Else
REM Druckbereich Seite 1
dim args221(1) as new com.sun.star.beans.PropertyValue
args221(0).Name = "Nr"
args221(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args221())
dim args20(1) as new com.sun.star.beans.PropertyValue
args20(0).Name = "ToPoint"
args20(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args20())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
REM Ausdruck Seite 1
dim args100(6) as new com.sun.star.beans.PropertyValue
args100(0).Name = "Copies"
args100(0).Value = 1
args100(1).Name = "Collate"
args100(1).Value = true
args100(2).Name = "Selection"
args100(2).Value = true
args100(3).Name = "Pages"
args100(3).Value = 1
args100(4).Name = "Sort"
args100(4).Value = true
args100(5).Name = "Wait"
args100(5).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args100())
REM Druckbereich Seite 2
dim args21(1) as new com.sun.star.beans.PropertyValue
args21(0).Name = "Nr"
args21(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args21())
dim args22(1) as new com.sun.star.beans.PropertyValue
args22(0).Name = "ToPoint"
args22(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args22())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
REM Ausdruck Seite 2
dim args101(6) as new com.sun.star.beans.PropertyValue
args101(0).Name = "Copies"
args101(0).Value = 1
args101(1).Name = "Collate"
args101(1).Value = true
args101(2).Name = "Selection"
args101(2).Value = true
args101(3).Name = "Pages"
args101(3).Value = 2
args101(4).Name = "Sort"
args101(4).Value = true
args101(5).Name = "Wait"
args101(5).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args101())
REM PDF-Export
Datei = "file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf"
dim pdfproperties(1) as new com.sun.star.beans.PropertyValue
pdfproperties(1).Name = "FilterName"
pdfproperties(1).Value = "calc_pdf_Export"
ThisComponent.StoreToUrl( Datei, pdfproperties())
StrAttPfad = ThisComponent.GetUrl ("file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf")
REM Druckbereiche entfernen
dim args23(1) as new com.sun.star.beans.PropertyValue
args23(0).Name = "ToPoint"
args23(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
dim args24(1) as new com.sun.star.beans.PropertyValue
args24(0).Name = "Nr"
args24(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args24())
dim args25(1) as new com.sun.star.beans.PropertyValue
args25(0).Name = "ToPoint"
args25(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args25())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
End If
REM ODS-Datei speichern
ODScalc = ThisComponent
ODScalc.Store()
REM Messagebox
PDFempfText = "Die Bestellung Nr. " & stringname & " an " & PDFempfString
msgbox PDFempftext & " wurde erfolgreich gespeichert und wird gedruckt!" & CHR13 & "Soll die Bestellung jetzt verschickt werden?", 36, "Herzlichen Glückwunsch!"
Jetzt sollte eigentlich mit der Antwort
Ja, also "
If Antwort = 6 then " das e-mail Fenster mit folgendem Code geöffnet werden
Code: Alles auswählen
REM gespeicherte PDF senden
Dim strAn As String
Dim strBetr As String
Dim strBody As String
Dim strThunderPfad As String
Dim strShell As String
strThunderPfad = """C:\Programme\Mozilla Thunderbird\Thunderbird.exe"""
mDoc = thisComponent
mSheet = mDoc.sheets(0)
mCell = mSheet.getCellRangeByName("AH17")
mStran = mCell.String
strAn = mStran
strBetr = "Bestellung Nr. " & stringname
strBody = " <br>Sehr geehrte Damen und Herren‚<p>im Anhang finden Sie unsere " & strBetr & " im PDF-Format.<p>Mit freundlichen Grüßen<p>"
strShell = strThunderPfad & _
"-compose " & _
"to='" & strAn & "'," & _
"subject='" & strBetr & "'," & _
",body=" & strBody & _
",attachment=" & ("file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf")
Call Shell(strShell, vbNormalFocu)
Andernfalls soll bei Antwort
Nein mit "
ElseIf Antwort = 7 then " das Makro beendet werden, um weiter am Dokument arbeiten zu können.
Ich habe es schon auf verschiedenste Weise probiert zu schreiben, auch wenn ich nicht genau weiß wie der Befehl für Makroende lautet, habe bei "nein" nochmal versucht eine msgbox aufzurufen, aber irgendetwas ging immer schief. Entweder hat das Makro bei beiden Antworten versucht zu senden, oder im Gegenteil überhaupt nichts gemacht und dann wurde auch nicht mehr das gedruckt was ich wollte, also das aus dem ersten If-Then-Else.
Mir raucht der K

opf
Hallo theindless,
hier mal mein Makro:
[code]REM ***** BASIC *****
Sub BestellungSpeichernUndVersenden
REM Definition der Variablen
Dim document as Object
Dim dispatcher as Object
Dim stringname as String
Dim PDFempfText as String
Dim ODScalc as Object
Dim strAttPfad As String
Calc = ThisComponent
Sheet = Calc.Sheets(0)
REM Bestellnummer finden
Cell = Sheet.GetCellRangeByName("AE9")
StringName = Cell.String
REM Seitenzahl ermitteln
CCell = Sheet.GetCellRangeByName("AG10")
ZStringName = CCell.String
REM Empfängername finden
CCCell = Sheet.GetCellRangeByName("A10")
PDFempfString = CCCell.String
REM Dokumentenzugriff
document = ThisComponent.CurrentController.Frame
dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
REM Wenn Bestellung 1-seitig
If ZStringName = "0" then
REM Druckbereich für 1 Seite
dim args121(1) as new com.sun.star.beans.PropertyValue
args121(0).Name = "Nr"
args121(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args121())
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
REM Ausdruck Seite 1
dim args99(3) as new com.sun.star.beans.PropertyValue
args99(0).Name = "Copies"
args99(0).Value = 1
args99(1).Name = "Collate"
args99(1).Value = true
args99(2).Name = "Selection"
args99(2).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args99())
REM PDF-Export
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "URL"
args11(0).Value = "file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf"
args11(1).Name = "FilterName"
args11(1).Value = "calc_pdf_Export"
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args11())
REM Druckbereich entfernen
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array()
REM Wenn Bestellung 2-seitig
Else
REM Druckbereich Seite 1
dim args221(1) as new com.sun.star.beans.PropertyValue
args221(0).Name = "Nr"
args221(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args221())
dim args20(1) as new com.sun.star.beans.PropertyValue
args20(0).Name = "ToPoint"
args20(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args20())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
REM Ausdruck Seite 1
dim args100(6) as new com.sun.star.beans.PropertyValue
args100(0).Name = "Copies"
args100(0).Value = 1
args100(1).Name = "Collate"
args100(1).Value = true
args100(2).Name = "Selection"
args100(2).Value = true
args100(3).Name = "Pages"
args100(3).Value = 1
args100(4).Name = "Sort"
args100(4).Value = true
args100(5).Name = "Wait"
args100(5).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args100())
REM Druckbereich Seite 2
dim args21(1) as new com.sun.star.beans.PropertyValue
args21(0).Name = "Nr"
args21(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args21())
dim args22(1) as new com.sun.star.beans.PropertyValue
args22(0).Name = "ToPoint"
args22(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args22())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
REM Ausdruck Seite 2
dim args101(6) as new com.sun.star.beans.PropertyValue
args101(0).Name = "Copies"
args101(0).Value = 1
args101(1).Name = "Collate"
args101(1).Value = true
args101(2).Name = "Selection"
args101(2).Value = true
args101(3).Name = "Pages"
args101(3).Value = 2
args101(4).Name = "Sort"
args101(4).Value = true
args101(5).Name = "Wait"
args101(5).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args101())
REM PDF-Export
Datei = "file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf"
dim pdfproperties(1) as new com.sun.star.beans.PropertyValue
pdfproperties(1).Name = "FilterName"
pdfproperties(1).Value = "calc_pdf_Export"
ThisComponent.StoreToUrl( Datei, pdfproperties())
StrAttPfad = ThisComponent.GetUrl ("file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf")
REM Druckbereiche entfernen
dim args23(1) as new com.sun.star.beans.PropertyValue
args23(0).Name = "ToPoint"
args23(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
dim args24(1) as new com.sun.star.beans.PropertyValue
args24(0).Name = "Nr"
args24(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args24())
dim args25(1) as new com.sun.star.beans.PropertyValue
args25(0).Name = "ToPoint"
args25(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args25())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
End If
REM ODS-Datei speichern
ODScalc = ThisComponent
ODScalc.Store()
REM Messagebox
PDFempfText = "Die Bestellung Nr. " & stringname & " an " & PDFempfString
msgbox PDFempftext & " wurde erfolgreich gespeichert und wird gedruckt!" & CHR13 & "Soll die Bestellung jetzt verschickt werden?", 36, "Herzlichen Glückwunsch!"[/code]
Jetzt sollte eigentlich mit der Antwort [b]Ja[/b], also " [i][b]If Antwort = 6 then[/b][/i] " das e-mail Fenster mit folgendem Code geöffnet werden
[code]REM gespeicherte PDF senden
Dim strAn As String
Dim strBetr As String
Dim strBody As String
Dim strThunderPfad As String
Dim strShell As String
strThunderPfad = """C:\Programme\Mozilla Thunderbird\Thunderbird.exe"""
mDoc = thisComponent
mSheet = mDoc.sheets(0)
mCell = mSheet.getCellRangeByName("AH17")
mStran = mCell.String
strAn = mStran
strBetr = "Bestellung Nr. " & stringname
strBody = " <br>Sehr geehrte Damen und Herren‚<p>im Anhang finden Sie unsere " & strBetr & " im PDF-Format.<p>Mit freundlichen Grüßen<p>"
strShell = strThunderPfad & _
"-compose " & _
"to='" & strAn & "'," & _
"subject='" & strBetr & "'," & _
",body=" & strBody & _
",attachment=" & ("file:///D:/PDF-Bestellungen/Bestellung." & stringname & ".pdf")
Call Shell(strShell, vbNormalFocu)[/code]
Andernfalls soll bei Antwort [b]Nein[/b] mit " [i][b]ElseIf Antwort = 7 then[/b][/i] " das Makro beendet werden, um weiter am Dokument arbeiten zu können.
Ich habe es schon auf verschiedenste Weise probiert zu schreiben, auch wenn ich nicht genau weiß wie der Befehl für Makroende lautet, habe bei "nein" nochmal versucht eine msgbox aufzurufen, aber irgendetwas ging immer schief. Entweder hat das Makro bei beiden Antworten versucht zu senden, oder im Gegenteil überhaupt nichts gemacht und dann wurde auch nicht mehr das gedruckt was ich wollte, also das aus dem ersten If-Then-Else.
Mir raucht der K :? opf