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
Makro, das einen Brief mit Datum, Empfänger und Betreff
Moderator: Moderatoren
Hey Kai-Uwe,
Wie gesagt: da schon die Grundlagen fehlen, ist es schwierig, dir zu helfen. Zum Beispiel:
ActiveDocument.close() gibt es selbstverständlich auch heute noch, vorausgesetzt, du hast der von dir erzeugten Variablen "ActiveDocument" das Objekt des aktiven Dokumentes zugewiesen. Will heissen, die Methode "close()" gibt es noch, das Objektmodell jedoch ist völlig anders.
Oder du findest hier jemand, der dir das komplette Makro "umschreibt". Ist aber eher unwahrscheinlich.
Gruss
Thomas
PS: Doppelpost gelöscht!
Na ja, da wirst du dich wohl mal ein wenig mit der aktuelen API beschäftigen müssen. Oder ein gutes Buch lesen. Es sind nicht nur diese Punkte, die du ändern musst - da ist leider mehr zu ändern. Und ich würde die bisherige Struktur überdenken - möglicherweise geht es mit OOo jetzt einfacher? Zumindest aber anders?Außerdem fehlt mir der Ausdruck für den Befehl ActiveDocument.SaveAs und
ActiveDocument.Close "",False u.v.m.
Wie gesagt: da schon die Grundlagen fehlen, ist es schwierig, dir zu helfen. Zum Beispiel:
ActiveDocument.close() gibt es selbstverständlich auch heute noch, vorausgesetzt, du hast der von dir erzeugten Variablen "ActiveDocument" das Objekt des aktiven Dokumentes zugewiesen. Will heissen, die Methode "close()" gibt es noch, das Objektmodell jedoch ist völlig anders.
Oder du findest hier jemand, der dir das komplette Makro "umschreibt". Ist aber eher unwahrscheinlich.
Gruss
Thomas
PS: Doppelpost gelöscht!
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Mühsam nährt sich das Eichhörnchen
Hallo Thomas,
vielen Dank für die offene Antwort. Es liegt ein steiniger Weg vor mir. Damals habe ich es auch erst nach viel Suchen und Abschauen, Parallelfälle umschreiben etc. geschafft, d.h. ich glaube, man kann auch als nicht-Experte viel durch Analogie-Schlüsse und trial and error erreichen.
Wenn Du mir vielleicht bei einer Funktion z.B. die Saves-Anweisung eine funktionierende Syntax aufzeigen könntest, würde ich versuchen, daraus Parallelen für den Rest zu ziehen bzw. Einzelfrage an das Forum zu stellen, die präziser sind. Bitte hilf mir bei einer Sache weiter.
Kai-Uwe
vielen Dank für die offene Antwort. Es liegt ein steiniger Weg vor mir. Damals habe ich es auch erst nach viel Suchen und Abschauen, Parallelfälle umschreiben etc. geschafft, d.h. ich glaube, man kann auch als nicht-Experte viel durch Analogie-Schlüsse und trial and error erreichen.
Wenn Du mir vielleicht bei einer Funktion z.B. die Saves-Anweisung eine funktionierende Syntax aufzeigen könntest, würde ich versuchen, daraus Parallelen für den Rest zu ziehen bzw. Einzelfrage an das Forum zu stellen, die präziser sind. Bitte hilf mir bei einer Sache weiter.
Kai-Uwe
Hey Uwe,
Gruss
Thomas
Klar. Lade dir doch einfach mal die Beispiele "Fahrtenbuch" sowie "Rechnung mit Nummer" von der Seite http://www.amt-wiesbaden.de herunter. Die sind gut dokumnetiert, beinhalten diese Befehle und können dir als Einstieg nurtzen.Wenn Du mir vielleicht bei einer Funktion z.B. die Saves-Anweisung eine funktionierende Syntax aufzeigen
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Link mit Programmen
Hallo Thomas,
vielen Dank für den Link! Ich werde mich an die Arbeit machen, die Strukturen nachzuvollziehen.
Herzliche Grüße,
Kai-Uwe
vielen Dank für den Link! Ich werde mich an die Arbeit machen, die Strukturen nachzuvollziehen.
Herzliche Grüße,
Kai-Uwe