Makro, das einen Brief mit Datum, Empfänger und Betreff
Verfasst: Sa, 07.01.2006 00:41
Hallo an alle,
ich habe folgendes Problem:
ich habe ein Makro unter SOffice 5.1, das das Speichern eines Briefes automatisiert, in die Sprache von OOffice 2.0 zu übertragen, da viele Formulierungen nicht mehr verstanden werden. Das Makro fragt nach Empfänger und Betreff und speichert den Brief in einem vorgegebenen Verzeichnis ab (ich habe mir die Ausdrücke aus dem damaligen Form mühsamst zusammengesucht, und verstehe nicht wirklich viel von Basic:
sub Save_as
on error goto Makro_abbrechen
Const sEmpf="Empfänger Name"
Const sBetreff="Betreff"
Const sTemp4="Erste Seite"
Const sText1="Herzlichen Glückwunsch"
Const sText2="Fehler beim Speichern"
Const sText3="Frage zu Anlage(n)"
Const sText4="Absender bestimmen"
ActiveWindow.Selection.SetFixDateTimeFields
Selection.InsertBookmark("Marke1")
ActiveWindow.GoToStartOfDoc( FALSE )
if Selection.PageStyle =sTemp4 then
ActiveModule.ViewSettings.ShowHiddenPara = FALSE
ActiveWindow.SearchSettings.Pattern = TRUE
ActiveWindow.SearchSettings.Backward = FALSE
ActiveWindow.SearchSettings.RegExp = FALSE
ActiveWindow.Search sEmpf
empfaengername = Activewindow.SelectionText
if empfaengername = "Vorname Nachname" then
MsgBox ("Das Dokument konnte nicht gespeichert werden. " + Chr(13) + "Bitte geben Sie zuerst einen Empfänger ein und speichern Sie erneut!" ,16, sText2)
goto Makro_ueberarbeiten
else
Selection.Escape
end if
ActiveWindow.GoToStartOfDoc( FALSE )
ActiveWindow.Search sBetreff
betreff = ActiveWindow.SelectionText
if betreff = "<Betreff>" then
MsgBox ("Das Dokument konnte nicht gespeichert werden." + Chr(13) + "Bitte geben Sie zuerst einen Betreff ein und speichern Sie erneut!" ,16, sText2)
goto Makro_ueberarbeiten
else
goto anlage_abfragen
endif
anlage_abfragen:
ActiveWindow.GoToStartOfDoc( FALSE )
ActiveWindow.SearchSettings.Pattern = FALSE
ActiveWindow.Search "Anlage(n)"
Selection.GoToEndOfLine( FALSE )
Selection.JumpToNextCell( FALSE )
Selection.GoToEndOfLine( TRUE )
sanlage = ActiveWindow.SelectionText
if sanlage = "" then
goto Anlage_Dialog
else goto speichern
endif
Anlage_Dialog:
sbutton = MsgBox ("Möchten Sie Anlagen am Briefende aufführen?", 32 + 4 + 0, sText3)
if sbutton = 6 then
goto Makro_ueberarbeiten
else goto speichern
endif
speichern:
ActiveWindow.Search sEmpf
ActiveWindow.GoToStartOfDoc( FALSE )
ActiveWindow.SearchSettings.Pattern = TRUE
ActiveWindow.SearchSettings.Backward = FALSE
ActiveWindow.SearchSettings.RegExp = FALSE
ActiveWindow.Search sEmpf
empfaengername = Activewindow.SelectionText
Selection.escape
mnumber = Month (Now)
dnumber = Day (Now)
Speicherpfad = "C:\Dokumente und Einstellungen\Familie Heinz\Eigene Dateien\Briefe\" & Year(Now) & "." & Format(mnumber, "##00") & "." + Format(dnumber, "##00") & " –––––––– " + empfaengername & " –––––––– "& betreff &".sdw"
Speicherpfad2 = "" & Year(Now) & "." &Format(mnumber, "##00") & "." + Format(dnumber, "##00") & " –––––––– " + empfaengername & " –––––––– "& betreff
Activedocument.SaveAs Speicherpfad
MSgbox "Das Dokument " + Chr(39)+Speicherpfad2 & Chr(39)+ Chr$(13)+ " wurde erfolgreich im Ordner " + Chr(39)+"Briefe" + Chr(39)+" gespeichert." & Chr$(13) & Chr$(13) , 64, Speicherpfad2
sbutton = Msgbox ("Soll das aktive Dokument jetzt" & Chr$(13)+ "gedruckt und geschlossen werden?", 32 + 4 + 0 , Speicherpfad2)
if sbutton = 6 then
ActiveWindow.PrintDefault()
ActiveModule.ViewSettings.HorzScrollbar = TRUE
ActiveModule.ViewSettings.HorzRuler = TRUE
else
ActiveModule.ViewSettings.HorzScrollbar = TRUE
ActiveModule.ViewSettings.HorzRuler = TRUE
goto Makro_beenden
endIf
goto Makro_beenden
else
Selection.GotoBookmark("Marke1",True,True)
Selection.DeleteBookmark("Marke1")
selection.escape
ActiveDocument.SaveAs
end if
goto Makro_beenden
Makro_abbrechen:
MSgbox "Versuch gescheitert! Bitte versuchen Sie es erneut. Tip: Enthält Betreffzeile vielleicht eines dieser Zeichen: % $ § * # \ / : & ? ! "" < > || ?" , 16, ""
Makro_beenden:
ActiveWindow.SearchSettings.Pattern = FALSE
ActiveDocument.Close "",False
Application.FullScreen = FALSE
wait 2000
Application.quit
Makro_ueberarbeiten:
end sub
Vieles aus Soffice funktioniert, z.B.
[i]speicherpfad = "" & Year(Now) & "." &Format(mnumber, "##00") & "." + Format(dnumber, "##00") & " –––––––– " + empfaengername & " –––––––– "& betreff[/i]
Auch wie ich eine Suche starten kann, weiß ich durch die Makro-Aufzeichnen-Funktion. Aber wie formuliere ich, dass das was er findet, wenn er die Vorlage "Empfänger" gesucht hat, der emfpaengername ist? In StarOffice wäre das gewesen:
empfaengername = Activewindow.SelectionText
Außerdem fehlt mir der Ausdruck für den Befehl ActiveDocument.SaveAs und
ActiveDocument.Close "",False u.v.m.
Kann mir jemand weiterhelfen?
Gruß,
Kai-Uwe
ich habe folgendes Problem:
ich habe ein Makro unter SOffice 5.1, das das Speichern eines Briefes automatisiert, in die Sprache von OOffice 2.0 zu übertragen, da viele Formulierungen nicht mehr verstanden werden. Das Makro fragt nach Empfänger und Betreff und speichert den Brief in einem vorgegebenen Verzeichnis ab (ich habe mir die Ausdrücke aus dem damaligen Form mühsamst zusammengesucht, und verstehe nicht wirklich viel von Basic:
sub Save_as
on error goto Makro_abbrechen
Const sEmpf="Empfänger Name"
Const sBetreff="Betreff"
Const sTemp4="Erste Seite"
Const sText1="Herzlichen Glückwunsch"
Const sText2="Fehler beim Speichern"
Const sText3="Frage zu Anlage(n)"
Const sText4="Absender bestimmen"
ActiveWindow.Selection.SetFixDateTimeFields
Selection.InsertBookmark("Marke1")
ActiveWindow.GoToStartOfDoc( FALSE )
if Selection.PageStyle =sTemp4 then
ActiveModule.ViewSettings.ShowHiddenPara = FALSE
ActiveWindow.SearchSettings.Pattern = TRUE
ActiveWindow.SearchSettings.Backward = FALSE
ActiveWindow.SearchSettings.RegExp = FALSE
ActiveWindow.Search sEmpf
empfaengername = Activewindow.SelectionText
if empfaengername = "Vorname Nachname" then
MsgBox ("Das Dokument konnte nicht gespeichert werden. " + Chr(13) + "Bitte geben Sie zuerst einen Empfänger ein und speichern Sie erneut!" ,16, sText2)
goto Makro_ueberarbeiten
else
Selection.Escape
end if
ActiveWindow.GoToStartOfDoc( FALSE )
ActiveWindow.Search sBetreff
betreff = ActiveWindow.SelectionText
if betreff = "<Betreff>" then
MsgBox ("Das Dokument konnte nicht gespeichert werden." + Chr(13) + "Bitte geben Sie zuerst einen Betreff ein und speichern Sie erneut!" ,16, sText2)
goto Makro_ueberarbeiten
else
goto anlage_abfragen
endif
anlage_abfragen:
ActiveWindow.GoToStartOfDoc( FALSE )
ActiveWindow.SearchSettings.Pattern = FALSE
ActiveWindow.Search "Anlage(n)"
Selection.GoToEndOfLine( FALSE )
Selection.JumpToNextCell( FALSE )
Selection.GoToEndOfLine( TRUE )
sanlage = ActiveWindow.SelectionText
if sanlage = "" then
goto Anlage_Dialog
else goto speichern
endif
Anlage_Dialog:
sbutton = MsgBox ("Möchten Sie Anlagen am Briefende aufführen?", 32 + 4 + 0, sText3)
if sbutton = 6 then
goto Makro_ueberarbeiten
else goto speichern
endif
speichern:
ActiveWindow.Search sEmpf
ActiveWindow.GoToStartOfDoc( FALSE )
ActiveWindow.SearchSettings.Pattern = TRUE
ActiveWindow.SearchSettings.Backward = FALSE
ActiveWindow.SearchSettings.RegExp = FALSE
ActiveWindow.Search sEmpf
empfaengername = Activewindow.SelectionText
Selection.escape
mnumber = Month (Now)
dnumber = Day (Now)
Speicherpfad = "C:\Dokumente und Einstellungen\Familie Heinz\Eigene Dateien\Briefe\" & Year(Now) & "." & Format(mnumber, "##00") & "." + Format(dnumber, "##00") & " –––––––– " + empfaengername & " –––––––– "& betreff &".sdw"
Speicherpfad2 = "" & Year(Now) & "." &Format(mnumber, "##00") & "." + Format(dnumber, "##00") & " –––––––– " + empfaengername & " –––––––– "& betreff
Activedocument.SaveAs Speicherpfad
MSgbox "Das Dokument " + Chr(39)+Speicherpfad2 & Chr(39)+ Chr$(13)+ " wurde erfolgreich im Ordner " + Chr(39)+"Briefe" + Chr(39)+" gespeichert." & Chr$(13) & Chr$(13) , 64, Speicherpfad2
sbutton = Msgbox ("Soll das aktive Dokument jetzt" & Chr$(13)+ "gedruckt und geschlossen werden?", 32 + 4 + 0 , Speicherpfad2)
if sbutton = 6 then
ActiveWindow.PrintDefault()
ActiveModule.ViewSettings.HorzScrollbar = TRUE
ActiveModule.ViewSettings.HorzRuler = TRUE
else
ActiveModule.ViewSettings.HorzScrollbar = TRUE
ActiveModule.ViewSettings.HorzRuler = TRUE
goto Makro_beenden
endIf
goto Makro_beenden
else
Selection.GotoBookmark("Marke1",True,True)
Selection.DeleteBookmark("Marke1")
selection.escape
ActiveDocument.SaveAs
end if
goto Makro_beenden
Makro_abbrechen:
MSgbox "Versuch gescheitert! Bitte versuchen Sie es erneut. Tip: Enthält Betreffzeile vielleicht eines dieser Zeichen: % $ § * # \ / : & ? ! "" < > || ?" , 16, ""
Makro_beenden:
ActiveWindow.SearchSettings.Pattern = FALSE
ActiveDocument.Close "",False
Application.FullScreen = FALSE
wait 2000
Application.quit
Makro_ueberarbeiten:
end sub
Vieles aus Soffice funktioniert, z.B.
[i]speicherpfad = "" & Year(Now) & "." &Format(mnumber, "##00") & "." + Format(dnumber, "##00") & " –––––––– " + empfaengername & " –––––––– "& betreff[/i]
Auch wie ich eine Suche starten kann, weiß ich durch die Makro-Aufzeichnen-Funktion. Aber wie formuliere ich, dass das was er findet, wenn er die Vorlage "Empfänger" gesucht hat, der emfpaengername ist? In StarOffice wäre das gewesen:
empfaengername = Activewindow.SelectionText
Außerdem fehlt mir der Ausdruck für den Befehl ActiveDocument.SaveAs und
ActiveDocument.Close "",False u.v.m.
Kann mir jemand weiterhelfen?
Gruß,
Kai-Uwe