Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Moderator: Moderatoren
Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo zusammen,
ich möchte gerne meine Rechnungsvorlage in dem Programm Büro easy von Lexware anpassen.
In dieser Vorlage hat man die Möglichkeit über die Menüleiste diverse vordefinierte Platzhalter einzufügen. Unter anderem gibt es da einen Platzhalter
für das sog. Leistungsdatum.
Da ich nicht bei jeder Position das Datum verwende bzw. vorhanden ist, möchte ich den Wert/Inhalt des Platzhalters (ItemServiceDate) beim Öffnen
der Rechnung für den Ausdruck abfragen, ob denn ein Wert sich in diesem Paltzhalter befindet. Wenn ja, dann soll der Text "Leistungsdatum: " und
danach der Inhalt (Datum) des Platzhalters eingefügt werden. Ist kein Wert vorhanden, dann einfach nichts drucken.
Ich weiß nicht wie die Tabellen oder Felder heißen. Das ist irgendwie gesperrt. Auch schaffe ich es nicht diese Abfrage zu integrieren. Auch mit der
Möglichkeit des bedingten Textes kam ich nicht zu dem gewünschten Erfolg. Entweder kann ich es nicht, oder es ist schlichtweg nicht möglich. Ich habe
auch Testweise versucht mit dem Print-Befehl ein "Hallo" auszugeben wenn sich die ausgefüllte Rechnungsvorlage öffnet. Aber auch das schaffe ich
nicht. Wo muss ich denn so etwas z.b. einfügen (welches Modul)? Vielleicht hilft mir das ja auch schon weiter.
Ich wende mich nun mit meinem Problem vertrauensvoll an euch, mit der Hoffnung, das mir geholfen werden kann.
Vielen, vielen Dank für eure Bemühungen.
Gruß
Tom
ich möchte gerne meine Rechnungsvorlage in dem Programm Büro easy von Lexware anpassen.
In dieser Vorlage hat man die Möglichkeit über die Menüleiste diverse vordefinierte Platzhalter einzufügen. Unter anderem gibt es da einen Platzhalter
für das sog. Leistungsdatum.
Da ich nicht bei jeder Position das Datum verwende bzw. vorhanden ist, möchte ich den Wert/Inhalt des Platzhalters (ItemServiceDate) beim Öffnen
der Rechnung für den Ausdruck abfragen, ob denn ein Wert sich in diesem Paltzhalter befindet. Wenn ja, dann soll der Text "Leistungsdatum: " und
danach der Inhalt (Datum) des Platzhalters eingefügt werden. Ist kein Wert vorhanden, dann einfach nichts drucken.
Ich weiß nicht wie die Tabellen oder Felder heißen. Das ist irgendwie gesperrt. Auch schaffe ich es nicht diese Abfrage zu integrieren. Auch mit der
Möglichkeit des bedingten Textes kam ich nicht zu dem gewünschten Erfolg. Entweder kann ich es nicht, oder es ist schlichtweg nicht möglich. Ich habe
auch Testweise versucht mit dem Print-Befehl ein "Hallo" auszugeben wenn sich die ausgefüllte Rechnungsvorlage öffnet. Aber auch das schaffe ich
nicht. Wo muss ich denn so etwas z.b. einfügen (welches Modul)? Vielleicht hilft mir das ja auch schon weiter.
Ich wende mich nun mit meinem Problem vertrauensvoll an euch, mit der Hoffnung, das mir geholfen werden kann.
Vielen, vielen Dank für eure Bemühungen.
Gruß
Tom
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Aloha
Insofern müsstest Du vielleicht mal ein Beispiel hervorzaubern, wie es aussieht, wenn ein Wert eingetragen ist bzw. wenn kein Wert eingetragen ist.
Ansonsten könnte ich hier nur vollkommen im Dunkeln rumstochern.
Wenn ein Platzhalter einen Wert bekommen hat, ist es kein Platzhalter mehr, sondern einfacher Text und kann somit auch nicht mehr als Feld angesprochen werden.Da ich nicht bei jeder Position das Datum verwende bzw. vorhanden ist, möchte ich den Wert/Inhalt des Platzhalters (ItemServiceDate) beim Öffnen der Rechnung für den Ausdruck abfragen, ob denn ein Wert sich in diesem Paltzhalter befindet.
Insofern müsstest Du vielleicht mal ein Beispiel hervorzaubern, wie es aussieht, wenn ein Wert eingetragen ist bzw. wenn kein Wert eingetragen ist.
Ansonsten könnte ich hier nur vollkommen im Dunkeln rumstochern.
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo DPunch,
ich habe mal einen Screenshot beigefügt wie das im Writer aussieht. Ich möchte nun, das der Text "Leistungserbringung inkl. Datum" nur angezeigt wird, wenn auch tatsächlich ein Datum (ItemServiceDate) dazu existiert. Das Datum selbst kann bei der Rechnungserstellung in Büro easy bei jeder Position angegeben werden (oder auch nicht). Wie oder mit welchen Mitteln kann ich das Abfragen?
Danke für die Unterstützung.
Gruß
Tom
ich habe mal einen Screenshot beigefügt wie das im Writer aussieht. Ich möchte nun, das der Text "Leistungserbringung inkl. Datum" nur angezeigt wird, wenn auch tatsächlich ein Datum (ItemServiceDate) dazu existiert. Das Datum selbst kann bei der Rechnungserstellung in Büro easy bei jeder Position angegeben werden (oder auch nicht). Wie oder mit welchen Mitteln kann ich das Abfragen?
Danke für die Unterstützung.
Gruß
Tom
- Dateianhänge
-
- Platzhalter Screenshot
- Platzhalter.JPG (32.25 KiB) 2329 mal betrachtet
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hi Tom,
Solche Dinge kann man sehr schnell rausfinden wenn man sich xray und das zugehörige SDK installiert.
Viel Erfolg.
Jürgen
Versuche es mal so:tom670 hat geschrieben:Wie oder mit welchen Mitteln kann ich das Abfragen?
Code: Alles auswählen
Sub Platzhalter_finden
Dim oItemServiceDate as boolean
oDoc = thisComponent
oItemServiceDate = false
oTxtFelder = oDoc.getTextFields().createEnumeration()
do while oTxtFelder.hasmoreElements()
oFeld = oTxtFelder.nextElement
' xray ofeld
if oFeld.Placeholder = "ItemServiceDate" then
oItemServiceDate = True
end if
loop
if oItemServiceDate = true then
MsgBox "Mache nichts und beende weil kein Datum vorhanden! "
Exit Sub
end if
MsgBox "Tu irgendwas weil Datum vorhanden! "
End Sub
Viel Erfolg.
Jürgen
Zuletzt geändert von turtle47 am Mo, 08.03.2010 23:05, insgesamt 1-mal geändert.
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo turtle47,
wo soll ich deinen Quellcode unterbringen, damit sich dieser automatisch beim Öffnen der Vorlage ausführt?
Wie du aus dem beigefügten Screenshot entnehmen kannst habe ich deine Prozedur in meiner Rechnungsvorlage unter "Standard - Default" abgelegt. Dort liegen auch schon Prozeduren für Büro easy.
Vielleicht ein Hinweis zu Büro easy:
Man erstellt in dem Programm seine Rechnung für einen Kunden indem man Position für Position eingibt. Wenn alle Positionen erfasst sind gibt es einen Button der da "OpenOffice" heißt. Sowie man diesen anklickt muss man noch seine Rechnungsvorlage auswählen. Anschließend öffnet sich Writer mit der bereits vollständig ausgefüllten Rechnung.
Danke für die Hilfe.
Gruß
Tom
wo soll ich deinen Quellcode unterbringen, damit sich dieser automatisch beim Öffnen der Vorlage ausführt?
Wie du aus dem beigefügten Screenshot entnehmen kannst habe ich deine Prozedur in meiner Rechnungsvorlage unter "Standard - Default" abgelegt. Dort liegen auch schon Prozeduren für Büro easy.
Vielleicht ein Hinweis zu Büro easy:
Man erstellt in dem Programm seine Rechnung für einen Kunden indem man Position für Position eingibt. Wenn alle Positionen erfasst sind gibt es einen Button der da "OpenOffice" heißt. Sowie man diesen anklickt muss man noch seine Rechnungsvorlage auswählen. Anschließend öffnet sich Writer mit der bereits vollständig ausgefüllten Rechnung.
Danke für die Hilfe.
Gruß
Tom
- Dateianhänge
-
- Ort.JPG (33.52 KiB) 2309 mal betrachtet
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hi Tom,
Du musst Ihn nur unter Menue > Extras > Anpassen > Reiter Ereignisse der entsprechenden Aktion das Makro zuweisen.
Bei einer Vorlage (.ott) ist das "Neues Dokument"
Bei einem Dokument (.odt) ist das "Dokument öffnen"
Dir sollte aber klar sein, dass die Makros in jedem Dokument vorhanden sind und somit gespeichert und weitergegeben werden!
Wenn Du nur auf einem Rechner damit arbeitest kann man das umgehen, indem Du die Makros in einer eigenen Bibliothek unter "Meine Makros" ablegst.
Diese eigene Bibliothek kann man dann als Extension exportieren, für den Fall der Fälle, oder aber auch zur Übertragung auf andere Rechner.
Oder aber man löscht alle Module in dem Dokument mittels eines kleinen Skripts. Dann ist nur noch das Löschscript vorhanden.
Ich hoffe das bringt etwas Licht ins Dunkel?
Jürgen
Das ist eigentlich egal in welchem Modul des Dokumentes er liegt.tom670 hat geschrieben: wo soll ich deinen Quellcode unterbringen, damit sich dieser automatisch beim Öffnen der Vorlage ausführt?
Du musst Ihn nur unter Menue > Extras > Anpassen > Reiter Ereignisse der entsprechenden Aktion das Makro zuweisen.
Bei einer Vorlage (.ott) ist das "Neues Dokument"
Bei einem Dokument (.odt) ist das "Dokument öffnen"
Dir sollte aber klar sein, dass die Makros in jedem Dokument vorhanden sind und somit gespeichert und weitergegeben werden!
Wenn Du nur auf einem Rechner damit arbeitest kann man das umgehen, indem Du die Makros in einer eigenen Bibliothek unter "Meine Makros" ablegst.
Diese eigene Bibliothek kann man dann als Extension exportieren, für den Fall der Fälle, oder aber auch zur Übertragung auf andere Rechner.
Oder aber man löscht alle Module in dem Dokument mittels eines kleinen Skripts. Dann ist nur noch das Löschscript vorhanden.
Ich hoffe das bringt etwas Licht ins Dunkel?
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo turtle47,
erst einmal vielen Dank das du dir hier so die Zeit für mich nimmst.
Es geht immer Stück für Stück weiter und ich lerne hier dazu.
Ich habe das so gemacht wie du es mir beschrieben hast. (Meine Version von OpenOffice ist die 3.1)
Wenn sich nun das neue Dokument öffnet erhalte ich die Meldung, das eine Variable nicht deklariert ist.
Bei oDoc kann ich mir denken, das es sich um ein Objekt handelt. Aber was sind oTxtFelder und oFeld?
Danke für die Info.
Viele Grüße
Tom
erst einmal vielen Dank das du dir hier so die Zeit für mich nimmst.
Es geht immer Stück für Stück weiter und ich lerne hier dazu.
Ich habe das so gemacht wie du es mir beschrieben hast. (Meine Version von OpenOffice ist die 3.1)
Wenn sich nun das neue Dokument öffnet erhalte ich die Meldung, das eine Variable nicht deklariert ist.
Bei oDoc kann ich mir denken, das es sich um ein Objekt handelt. Aber was sind oTxtFelder und oFeld?
Danke für die Info.
Viele Grüße
Tom
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo Tom,
Mehr zu Variablen findest Du auf Michaels Seite, sowie andere Dinge.
Jetzt zu Deinem Problem. Zuerst dachte ich, dass die Platzhalter nicht gefunden würden weil sie in einer Tabelle liegen.
Das habe ich jetzt aber ausgeschlossen.
Kannn es sein, dass Du in Deinem Modul obenstehen hast?
Wenn das der Fall ist, dann muss wirklich jede einzelne Variable definiert werden.
Ersetze deshalb mal den oberen Teil der Sub wie folgt:
Und, funktioniert es jetzt?
Jürgen
Es ist immer wichtig zu wissen welche Zeile in der IDE angezeigt wird wenn die Fehlermeldung kommt.tom670 hat geschrieben:Wenn sich nun das neue Dokument öffnet erhalte ich die Meldung, das eine Variable nicht deklariert ist.
Nun ja, das sind Variablen die hier in diesem Fall mit Objekten "gefüllt" werden.tom670 hat geschrieben:Aber was sind oTxtFelder und oFeld?
Mehr zu Variablen findest Du auf Michaels Seite, sowie andere Dinge.
Jetzt zu Deinem Problem. Zuerst dachte ich, dass die Platzhalter nicht gefunden würden weil sie in einer Tabelle liegen.
Das habe ich jetzt aber ausgeschlossen.
Kannn es sein, dass Du in Deinem Modul oben
Code: Alles auswählen
Option Explicit
Wenn das der Fall ist, dann muss wirklich jede einzelne Variable definiert werden.
Ersetze deshalb mal den oberen Teil der Sub wie folgt:
Code: Alles auswählen
Sub Platzhalter_finden
Dim oItemServiceDate as boolean
Dim odoc as Object
Dim oTxtFelder as Object
Dim oFeld as Object
oDoc = thisComponent
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Aloha
Versuch mal das hier:
Hast Du zufällig Zugriff auf die Routinen, in denen die Werte in die Platzhalter eingetragen werden?
Ich halte es für besser, wenn der Text "Leistungserbringung:" Teil des in den Platzhalter eingetragenen Textes ist.
Sprich beim Ersetzen der Platzhalter wird nicht nur das Datum eingetragen, sondern eben direkt "Leistungserbringung: >>Datum<<".
Fehlt das Datum, steht auch keine einsame Leistungserbringung irgendwo im Raum.
Versuch mal das hier:
Code: Alles auswählen
Dim oDoc as Object, TextFields as Object
Dim thisField as Object, oCursor as Object, Anchor as Object
oDoc = thiscomponent
TextFields = oDoc.TextFields.createEnumeration
Do While TextFields.hasMoreElements
thisField = TextFields.NextElement
If thisField.supportsService("com.sun.star.text.textfield.JumpEdit") Then
If thisField.Placeholder = "ItemServiceDate" Then
oCursor = oDoc.CurrentController.getViewCursor
Anchor = thisField.Anchor
oCursor.gotoRange(Anchor,False)
oCursor.gotoStartOfLine(True)
oCursor.Text.setString("")
Exit Sub
End If
End If
Loop
Ich halte es für besser, wenn der Text "Leistungserbringung:" Teil des in den Platzhalter eingetragenen Textes ist.
Sprich beim Ersetzen der Platzhalter wird nicht nur das Datum eingetragen, sondern eben direkt "Leistungserbringung: >>Datum<<".
Fehlt das Datum, steht auch keine einsame Leistungserbringung irgendwo im Raum.
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo turtle47,
Hallo DPunch,
ich habe eure Lösungsvorschläge ausprobiert.
@turtle47
Die Zeile "Option Explicit" existiert. Daher habe ich den Quellcode deines Programms entsprechend deiner Anleitung ersetzt.
Nun erhalte ich die Fehlermeldung s. Fehler_turtle47.jpg weiter unten.
@DPunch
Einen Zugriff auf die Routinen habe ich nicht. Die sind mit einem Passwort geschützt. Es existieren zwar einige Codezeilen welche sich auf Platzhalter beziehen, aber das sieht mir mehr nach dem Aufbau von den zur Verfügung gestellten Menüleisten aus. Hier ein Beispiel:
Wenn ich deinen Lösungsvorschlag ausführe, dann ist die Artikelzeile inkl. der Zeile mit dem Leistungsdatum 'leer'. Also die ganze Zelle hat keinen Inhalt mehr. Dabei ist es egal, ob es ein Leistungsdatum gibt oder nicht.
Ferner sind mir noch 3 Prozeduren aufgefallen. Ich weiß nicht wann diese ausgeführt werden, aber eine ähnelt deinem Code. Vielleicht kannst du damit was anfangen:
Danke für eure Hilfe.
Gruß
Tom
Hallo DPunch,
ich habe eure Lösungsvorschläge ausprobiert.
@turtle47
Die Zeile "Option Explicit" existiert. Daher habe ich den Quellcode deines Programms entsprechend deiner Anleitung ersetzt.
Nun erhalte ich die Fehlermeldung s. Fehler_turtle47.jpg weiter unten.
@DPunch
Einen Zugriff auf die Routinen habe ich nicht. Die sind mit einem Passwort geschützt. Es existieren zwar einige Codezeilen welche sich auf Platzhalter beziehen, aber das sieht mir mehr nach dem Aufbau von den zur Verfügung gestellten Menüleisten aus. Hier ein Beispiel:
Code: Alles auswählen
sub InsertBelegnummer
InsertPlaceholder("TransNumber", "Belegnummer")
end sub
Ferner sind mir noch 3 Prozeduren aufgefallen. Ich weiß nicht wann diese ausgeführt werden, aber eine ähnelt deinem Code. Vielleicht kannst du damit was anfangen:
Code: Alles auswählen
Sub Example_RemoveAllPlaceholders
dim oDoc as object
dim oEnum as object
dim oTField as object
dim anc as object
dim StyleFamilies as object
dim PageStyles as object
dim DefPage as object
dim header as object
oDoc = ThisComponent
StyleFamilies = oDoc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Standard")
header=DefPage.headertext
header.TextFields.createEnumeration
header.setString("Hallo")
oEnum = oDoc.TextFields.createEnumeration
Do While oEnum.hasMoreElements
oTField = oEnum.nextElement
If oTField.supportsService("com.sun.star.text.TextField.JumpEdit") Then
anc = oTField.getAnchor()
oDoc.Text.insertString(anc, ">>>>test<<<<", true)
'oDoc.Text.removeTextContent(oTField)
End If
Loop
End Sub
sub Test
InsertPlaceholder("a1", "b1")
InsertPlaceholder("a2", "b2")
InsertPlaceholder("a3", "b3")
InsertPlaceholder("a4", "b4")
InsertPlaceholder("a5", "b5")
end sub
sub InsertPlaceholder(nameString as String, tipString as String)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Type"
args1(0).Value = 38
args1(1).Name = "SubType"
args1(1).Value = 0
args1(2).Name = "Name"
args1(2).Value = nameString
args1(3).Name = "Content"
args1(3).Value = tipString
args1(4).Name = "Format"
args1(4).Value = 0
args1(5).Name = "Separator"
args1(5).Value = " "
dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args1())
end sub
Gruß
Tom
- Dateianhänge
-
- Fehler_turtle47.JPG (29.15 KiB) 2258 mal betrachtet
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Aloha
Das hört sich stark so an, als wäre mein Makro vor dem anderen zum Einsatz gekommen, so dass in ItemServiceDate natürlich noch gar nichts drin stehen konnte und daher gelöscht wurde.
Dass die ganze Zelle leer ist, sollte eigentlich nicht sein, aber das lässt sich problemlos ändern.
Versuch mal, eine Rechnung zu erstellen, und dann erst manuell mein vorgeschlagenes Makro auszuführen.tom670 hat geschrieben:Wenn ich deinen Lösungsvorschlag ausführe, dann ist die Artikelzeile inkl. der Zeile mit dem Leistungsdatum 'leer'. Also die ganze Zelle hat keinen Inhalt mehr. Dabei ist es egal, ob es ein Leistungsdatum gibt oder nicht.
Das hört sich stark so an, als wäre mein Makro vor dem anderen zum Einsatz gekommen, so dass in ItemServiceDate natürlich noch gar nichts drin stehen konnte und daher gelöscht wurde.
Dass die ganze Zelle leer ist, sollte eigentlich nicht sein, aber das lässt sich problemlos ändern.
Die Prozedur ruft eine andere Prozedur zum Einfügen der Platzhalter als solche in das Dokument auf und ist wohl nur bei der Erstellung der Rechnungsvorlage zum Einsatz gekommen.Einen Zugriff auf die Routinen habe ich nicht. Die sind mit einem Passwort geschützt. Es existieren zwar einige Codezeilen welche sich auf Platzhalter beziehen, aber das sieht mir mehr nach dem Aufbau von den zur Verfügung gestellten Menüleisten aus.
Das sieht nach etwas holprigen ersten Schritten in der Makro-Programmierung aus, vermutlich waren das ein paar Test-Prozeduren, die der ursprüngliche Ersteller sich zusammengebastelt hat. Die können leider nicht zur Problemlösung beitragen.Ferner sind mir noch 3 Prozeduren aufgefallen. Ich weiß nicht wann diese ausgeführt werden, aber eine ähnelt deinem Code. Vielleicht kannst du damit was anfangen(...)
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hallo turtle47,
hallo DPunch,
zuerst habe ich den Vorschlag von turtle47 ausprobiert. Nachdem ich den Variablennamen abgeändert habe und eine Rechnung erstellte bekam ich die Fehlermeldung <Fehler1_turtle47>.
Als ich es anschließend gleich nochmal versuchte, erhielt ich den Fehler <Fehler2_turtle47>.
Danach habe ich das automatische Ausführen des Makros beim öffnen des Dokumentes unterbunden und den Code von DPunch manuell ausgeführt. Ich hoffe ich habe das richtig gemacht. Als ich das Dokument vor mir hatte, klickte ich auf Extras - Makros - Makro ausführen und wählte die entsprechende Prozedur. Aber da passierte nichts. Egal ob ein Datum vorhanden war oder nicht.
Wäre vielleicht das eine Lösung:
Besteht die Möglichkeit nach dem Wort "Leistungsdatum" in allen Zellen zu suchen und ob anschließend noch ein paar Zeichen folgen (=Datum) bzw. ob danach überhaupt noch was kommt in dieser Zeile. Sollten noch Zeichen folgen, dann passt ja alles. Sollten allerdings keine Zeichen mehr folgen, dann das Wort "Leistungsdatum" bzw. die Zeile (nicht die Zelle) löschen.
Leider habe ich auch hier keine Ahnung wie das funktionieren könnte.
Danke für eure Unterstützung. Eure Geduld mit mir muss man wirklich an dieser Stelle hervorheben.
Gruß
Tom
hallo DPunch,
zuerst habe ich den Vorschlag von turtle47 ausprobiert. Nachdem ich den Variablennamen abgeändert habe und eine Rechnung erstellte bekam ich die Fehlermeldung <Fehler1_turtle47>.
Als ich es anschließend gleich nochmal versuchte, erhielt ich den Fehler <Fehler2_turtle47>.
Danach habe ich das automatische Ausführen des Makros beim öffnen des Dokumentes unterbunden und den Code von DPunch manuell ausgeführt. Ich hoffe ich habe das richtig gemacht. Als ich das Dokument vor mir hatte, klickte ich auf Extras - Makros - Makro ausführen und wählte die entsprechende Prozedur. Aber da passierte nichts. Egal ob ein Datum vorhanden war oder nicht.
Wäre vielleicht das eine Lösung:
Besteht die Möglichkeit nach dem Wort "Leistungsdatum" in allen Zellen zu suchen und ob anschließend noch ein paar Zeichen folgen (=Datum) bzw. ob danach überhaupt noch was kommt in dieser Zeile. Sollten noch Zeichen folgen, dann passt ja alles. Sollten allerdings keine Zeichen mehr folgen, dann das Wort "Leistungsdatum" bzw. die Zeile (nicht die Zelle) löschen.
Leider habe ich auch hier keine Ahnung wie das funktionieren könnte.
Danke für eure Unterstützung. Eure Geduld mit mir muss man wirklich an dieser Stelle hervorheben.
Gruß
Tom
- Dateianhänge
-
- Fehler2_turtle47.JPG (44.85 KiB) 2232 mal betrachtet
-
- Fehler1_turtle47.JPG (15.21 KiB) 2232 mal betrachtet
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Hi Tom,
langsam hebe ich keinen Plan mehr was da bei Dir schiefläuft.
Ich hänge Dir mal zwei Dokmente an. Eine .odt und eine .ott.
Beide laufen bei mir einwandfrei.
Beim Öffnen wird die Meldung ausgegeben, dass kein Datum vorhanden ist.
Wenn Du den Platzhalter entfernst und die Schaltfläche drückst kommt die andere Medung.
Weiterhin viel Geduld.
Jürgen
langsam hebe ich keinen Plan mehr was da bei Dir schiefläuft.
Ich hänge Dir mal zwei Dokmente an. Eine .odt und eine .ott.
Beide laufen bei mir einwandfrei.
Beim Öffnen wird die Meldung ausgegeben, dass kein Datum vorhanden ist.
Wenn Du den Platzhalter entfernst und die Schaltfläche drückst kommt die andere Medung.
Weiterhin viel Geduld.
Jürgen
- Dateianhänge
-
- Feldbefehl prüfen vorhanden.odt
- (11.48 KiB) 47-mal heruntergeladen
-
- Feldbefehl prüfen vorhanden.ott
- (11.5 KiB) 33-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Platzhalter - Wert/Inhalt ermitteln für bedingte Textanzeige
Aloha
Hat irgendwie was von Holzhammer-Methode, aber seis drum.
Vorausgesetzt ist nur, dass die Leistungserbringung in einer Tabelle steht.
Dieses Makro einfach nach dem Makro für die Platzhalter laufen lassen
Ja, das ist machbar.tom670 hat geschrieben:Wäre vielleicht das eine Lösung:
Besteht die Möglichkeit nach dem Wort "Leistungsdatum" in allen Zellen zu suchen und ob anschließend noch ein paar Zeichen folgen (=Datum) bzw. ob danach überhaupt noch was kommt in dieser Zeile. Sollten noch Zeichen folgen, dann passt ja alles. Sollten allerdings keine Zeichen mehr folgen, dann das Wort "Leistungsdatum" bzw. die Zeile (nicht die Zelle) löschen.
Code: Alles auswählen
oDoc = thisComponent
oSearchDescriptor = oDoc.createSearchDescriptor
With oSearchDescriptor
.searchWords = True
.searchString = "Leistungserbringung:"
End With
oResult = oDoc.findAll(oSearchDescriptor)
If oResult.Count = 0 Then
Exit Sub
End If
oCursor = oResult(0).Text.createTextCursor
oCursor.gotoRange(oResult(0),False)
If NOT oCursor.gotoNextWord(False) OR NOT oCursor.isStartofWord Then
oCursor.gotoRange(oResult(0),False)
oCursor.gotoPreviousWord(False)
oCursor.gotoStart(True)
oCursor.Cell.String = oCursor.String
End If
Vorausgesetzt ist nur, dass die Leistungserbringung in einer Tabelle steht.
Dieses Makro einfach nach dem Makro für die Platzhalter laufen lassen