====== OpenOffice Makro für Serienbriefe per WHFC und Hylafax (Windows) ====== Funktionalität noch nicht überprüft ===== Code ===== Attribute VB_Name = "NewMacros2" Sub AktuellesDokumentFaxen() ' ' AktuellesDokumentFaxen Makro ' soll das aktuelle Dokument als Fax mit WHFC versenden ' Makro erstellt am 17.02.1999 von Heiko Teichmeier ' überarbeitet: ' Heiko Teichmeier 03.11.2001 ' heiko@tei-lin-net.de ' Dim WhfcPrinter As String Dim Default_Active_Printer As String ' Name Eures Druckers für HylaFAX WhfcPrinter = "HylaFAX" Default_Active_Printer = ActivePrinter ' WHFC-HylaFAX-Drucker als Standarddrucker setzen ActivePrinter = WhfcPrinter$ Application.PrintOut FileName:="", Range:=wdPrintAllDocument, _ Item:=wdPrintDocumentContent, Copies:=1, Pages:="", _ PageType:=wdPrintAllPages, Collate:=True, Background:=True, _ PrintToFile:=False, Append:=False ' Default-Drucker (vorhin gespeichert) wieder als Standarddrucker setzen ActivePrinter = Default_Active_Printer$ End Sub Sub SendSerienfaxAktuelleSeite() ' ' SendSerienfaxAktuelleSeite Macro ' soll die aktuelle Seite eines Serienbriefes mit Feld "Fax_Nr" als ' Zielnummer versenden ' ' Urversion: ' SendThisFax Macro ' Macro created 08/11/98 by Keith Gray ' Macro modified 08/06/99 by Chua Choon Hian ' To restore the original default printer ' Change fixed path to temp directory by using environment variables ' Macro modified 01/07/99 by Keith Gray ' for multi-page documents ' ' (Version 1.04): ' Heiko Teichmeier 03.11.2001 ' heiko@tei-lin-net.de Dim whfc As Object Dim OLE_Return As Long Dim faxnum As String Dim SpoolFile As String Dim Title As String Dim WhfcPrinter As String Dim Default_Active_Printer As String Dim Box_Return As Integer 'RückgabeMeldung Dim Meldung As String Dim Doc_name As String Doc_name = ActiveDocument.Name SpoolFile = Environ("Temp") & "\fax.ps" Title = "Whfc Send_Serienfax_Aktuelle_Seite-Makro ( Version 1.04 )" faxnum = ActiveDocument.MailMerge.DataSource.DataFields("Fax_Nr") WhfcPrinter = "HylaFAX" Default_Active_Printer = ActivePrinter ActivePrinter = WhfcPrinter$ Application.PrintOut FileName:="", Range:=wdPrintAllDocument, _ Item:=wdPrintDocumentContent, Copies:=1, Pages:="", _ PageType:=wdPrintAllPages, Collate:=True, Background:=True, _ PrintToFile:=True, OutputFileName:=SpoolFile, Append:=False Set whfc = CreateObject("WHFC.OleSrv") OLE_Return = whfc.SendFax(SpoolFile, faxnum, True) If OLE_Return <= 0 Then Fax_fehler OLE_Return, Title Else Fax_ok Doc_name, Str(OLE_Return), Title End If Set whfc = Nothing ActivePrinter = Default_Active_Printer$ End Sub Sub SendSerienfaxAlleSeiten() ' ' SendSerienfaxAlleSeiten Macro ' soll alle Seiten eines Serienbriefes mit Feld "Fax_Nr" als ' Zielnummer versenden ' ' Urversion: ' MergeFax Macro (Version 1.03) ' Macro created 08/11/98 by Keith Gray ' ' (Version 1.04): ' Heiko Teichmeier 03.11.2001 ' heiko@tei-lin-net.de Dim whfc As Object Dim OLE_Return As Long Dim faxnum As String Dim SpoolFile As String Dim Title As String Dim WhfcPrinter As String Dim Default_Active_Printer As String Dim Box_Return As Integer 'RückgabeMeldung Dim Meldung As String Dim Doc_name As String Doc_name = ActiveDocument.Name ActiveDocument.MailMerge.ViewMailMergeFieldCodes = True ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord Numb_Faxes = ActiveDocument.MailMerge.DataSource.ActiveRecord ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord For I = 1 To Numb_Faxes SpoolFile = Environ("Temp") & "\fax" & I & ".ps" Title = "WHFC Send_Serienfax_Alle_Seiten-Makro ( Version 1.04 )" faxnum = ActiveDocument.MailMerge.DataSource.DataFields("Fax_Nr") WhfcPrinter = "HylaFAX" Default_Active_Printer = ActivePrinter ActivePrinter = WhfcPrinter$ Application.PrintOut FileName:="", Range:=wdPrintAllDocument, _ Item:=wdPrintDocumentContent, Copies:=1, Pages:="", _ PageType:=wdPrintAllPages, Collate:=True, Background:=True, _ PrintToFile:=True, OutputFileName:=SpoolFile, Append:=False Set whfc = CreateObject("WHFC.OleSrv") OLE_Return = whfc.SendFax(SpoolFile, faxnum, True) If OLE_Return <= 0 Then Fax_fehler OLE_Return, Title Else Fax_ok Doc_name, Str(OLE_Return), Title End If Set whfc = Nothing ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord Next I ActivePrinter = Default_Active_Printer$ End Sub Sub Fax_fehler(ret_wert, Title) ' Fehlermeldung nach Rückgabewert definieren und ausgeben If ret_wert = -1 Then Meldung = "Fehler ==> Fax kann nicht zum HylaFAX-Server gesendet werden!" ElseIf ret_wert = -2 Then Meldung = "Fehler ==> Ungültige Fax-Nummer!" ElseIf ret_wert = -3 Then Meldung = "Fehler ==> Fax-Übertragung vom User unterbrochen. Der User hat auf den 'Abbruch-Button' geklickt!" ElseIf ret_wert = -4 Then Meldung = "Fehler ==> Die Fax-Spool-Datei wurde nicht gefunden!" Else Meldung = "Fehler beim Versenden!" End If Box_Return = MsgBox(Meldung, 16, Title) End Sub ' Erfolgsmeldung ausgeben Sub Fax_ok(Doc_name, Job_nr, Title) Meldung = "Dokument: " & Doc_name & " wurde als Fax-Auftrag Nr. " & Job_nr & " versandt!" Box_Return = MsgBox(Meldung, 0, Title) End Sub ' Datensatz-Feld "Fax_Nr" nicht vorhanden - Fehlermeldung ausgeben Sub FieldFaxNrNichtGefunden(Doc_name, Job_nr, Title) Meldung = "Datensatz-Feld 'Fax_Nr' nicht gefunden!" Box_Return = MsgBox(Meldung, 16, Title) End Sub