von junmod » Mi, 13.06.2012 08:23
Hallo sven-my und Frieder,
ich danke Euch für Eure Lösungsvorschläge. Ich war aber in der Zwischenzeit auch nicht ganz untätig und was ich mir da zusammengebastelt habe funktioniert tatsächlich perfekt. Möglicherweise ist das Makro etwas umständlich geschrieben, aber es erfüllt den gewünschten Zweck.
Vielleicht möchtet Ihr es noch kommentieren und für Verbesserungsvorschläge bin ich immer offen.
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 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 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 für 2 Seiten
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())
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 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!", 64, "Herzlichen Glückwunsch!"
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 meine " & strBetr & "<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)
End Sub
Gruß
Dirk
Hallo sven-my und Frieder,
ich danke Euch für Eure Lösungsvorschläge. Ich war aber in der Zwischenzeit auch nicht ganz untätig und was ich mir da zusammengebastelt habe funktioniert tatsächlich perfekt. Möglicherweise ist das Makro etwas umständlich geschrieben, aber es erfüllt den gewünschten Zweck.
Vielleicht möchtet Ihr es noch kommentieren und für Verbesserungsvorschläge bin ich immer offen.
[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 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 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 für 2 Seiten
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())
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 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!", 64, "Herzlichen Glückwunsch!"
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 meine " & strBetr & "<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)
End Sub
[/code]
Gruß
Dirk