Seriendruck analog zu MS-Word

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Seriendruck analog zu MS-Word

Re: Seriendruck analog zu MS-Word

von Karolus » Do, 04.10.2012 13:40

Bin ich noch zu retten
Ja - erstelle ein normale Seriendruckvorlage in Writer und vergiss dieses Makrogewurstel.

Karolus

Seriendruck analog zu MS-Word, viele Probleme

von paf11 » Do, 04.10.2012 12:57

Hallo!
Da hab ich mir was angefangen!

ZWECK:
Seriendruckumstellung von MS-Word auf OO-Writer


WAS/WIE nache ich das

1) Seriendruckfelder ersetzen (siehe weiter unten )

funktioniert

2) In den Word Vorlagen gibt es auch Bedinungsfelder
IF {MERGEFIELD LetzteBestellung} <> "" .......

diese Felder muss ich vorher unter Feldbefehl,andere,..
als Variable deklarieren und kann sie nicht mehr wie unter Punkt 1 mit den Daten befüllen, da sollte dann auch die Bedingung ziehen.

Gibt es da eine andere Lösung??

3) Tabellen im Writer (in diesen Tabellen sind ebenfalls Seriendruckfelder. Im 1. Durchgang werden die Werte eingetragen und
angezeigt, dann muss ich aber auch noch die Berechnung aufrufen. Derzeit habe ich noch keine Möglichkeit gefunden im Makro
die Funktion "Felder aktualisieren = F9" aufzurufen

Gibt es da eine Lösung?


-- SERIENDRUCKFELDER ERSETZEN----
-- Daten für Seriendruck --
-- über 100 Datenfelder sind da drinnen
-- ich lese diese in ein array ein
-- zuerst die 1.Zeile mit den Feldnamen
-- dann die anderen Zeilen mit den Daten


SERIENDRUCK-DATEN
------------------

Vorname;Familienname;Geburtsdatum;Geschlecht;LetzteBestellung;Saldo
"Franz";"Meier";"12.12.1912","M";"";"100,00"


VORLAGE
-------

<Vorname> <Familienname>
....
IF {MERGEFIELD LetzteBestellung} <> "" "Danke für Ihre letzte Bestellung vom <LetzteBestellung>"





DATEN EINLESEN
-------------------

a1=Split(p1,";")
count = 0

sPath = ConvertToURL("c:\mischdaten\Daten.txt")


oFileAccess = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = oFileAccess.openFileRead(sPath)
oFileRead = createUnoService("com.sun.star.io.TextInputStream")
oFileRead.InputStream = oInputStream
oFileRead.Encoding = "ISO-8859-15"


oCursor = oDoc.Text.createTextCursor


Dim aPLH(500) --Platzhalter = FELDNAMEN
Dim aINH(500) --Inhalt = DATEN

Do While NOT oFileRead.IsEOF

sCurrentLine = oFileRead.readLine
aLines = Split(sCurrentLine,";")
'dim aPLH(UBound(aLines))
'dim aINH(UBound(aLines))

' --- Lesen der Feldnamen (werden im Text dann in Text in spitzen Klammern verwendet <FELDNAMEN>

For i = 0 to UBound(aLines)
aPLH(i) = "<"& aLines(i) & ">"
Next i


' -- weiterlesen zu den Daten, dort die Hochkomma entfernen

sCurrentLine = oFileRead.readLine

aLines = Split(sCurrentLine,";")
For i = 0 to UBound(aLines)
if left(aLines(i),1) = chr$(34) THEN
aINH(i) = Mid( aLines(i),2,Len(aLines(i)) -2)
end if
Next i

Loop


'-- dann werden alle Felder in der Vorlage welche mit <FELDNAME>
'-- aus dem Array aPLZ(i) übereinstimmen mit den Daten ersetzt

for i = 0 to uBound(aPLH())
trageEin(oDoc, aINH(i), aPLH(i)
next


........


REM diese Funktion ersetzt die Platzhalter im Dokument
sub trageEin(oDokument as object, sNeuTxt as string, sPlatzhalter as string)
oSuche = oDokument.createReplaceDescriptor()
with oSuche
.setSearchString(sPlatzhalter)
.setReplaceString(sNeuTxt)
end with
oDokument.replaceAll(oSuche)
end sub


-- BIN ICH NOCH ZU RETTEN ? --

Danke für jede Hilfe und lg
F.P

Re: Seriendruck analog zu MS-Word

von paf11 » Mi, 03.10.2012 09:35

Herzlichen Dank, funkt SUPER!

Re: Seriendruck analog zu MS-Word

von Stephan » Di, 02.10.2012 20:29

wie kann ich den Text in eine Variable bekommen
z.B.

Code: Alles auswählen

sPath = ConvertToURL("C:\Öffnungszeiten_Wien.odt")
dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=True
Doc = StarDesktop.loadComponentFromURL(sPath, "_blank", 0, myFileProp() )
mytextCursor=Doc.text.createtextcursor()   
mytextCursor.gotoEnd(true)
MeinTextInVariable = mytextCursor.String
Doc.Close(True)
Msgbox MeinTextInVariable


Gruß
Stephan

Seriendruck analog zu MS-Word

von paf11 » Di, 02.10.2012 19:53

Bitte um Hilfe

Seriendruck analog zu MS-Word ( <<PLZ>> und INCLUDE Datei)

Ich habe eine Vorlage in der ich Platzhalter (wie in MS-Word <<STRASSE>> <<PLZ>> usw habe,


zusätzlich möchte ich Text aus einem anderen .odt Dokument einbinden
(zb: wenn ich im Text den Platzhalter
INLCUDE C:\Öffnungszeiten_Wien.odt
finde, soll der Text eingelesen in eine Variable od. Array gelesen werden.

Wie kann ich ein Dokument lesen (ca 5-10 Zeile) und in einer Variablen
ablegen.

Meine Versuchen gingen alle nicht


Dim Doc
Dim sPath as String
Dim sVar
sPath = ConvertToURL("C:\Öffnungszeiten_Wien.odt")
'Open the document in the _hidden frame


dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=True
Doc = StarDesktop.loadComponentFromURL(sPath, "_blank", 0, myFileProp() )

wie kann ich den Text in eine Variable bekommen

danke F.P

Nach oben