Entwickler-Ecke

Sonstiges (Delphi) - OLE, OpenOffice


wolfgangschwarz1 - Fr 17.12.10 12:36
Titel: OLE, OpenOffice
Hallo!

Ich bin kein Programmierer. :(

In einer branchenspezifischen Anwendung werden Kundendaten an Word weitergegeben und durch Suchen&Ersetzen Kundendaten in Word-Dokumente eingefügt. Ich selbst kenne mich NULL aus, hätte aber jemanden, der mir das in unser (zwingend notwendiges) Branchenlösungs-Programmes einbaut - er mag sich aber nicht mit der Thematik OpenOffice beschäftigen.

Es geht nun darum, dass nicht mehr Word als Programm geöffnet wird, sondern ich hätte gerne, dass OpenOffice-Writer geöffnet wird und das Suchen&Ersetzen nicht im Word sondern im OpenOffice passiert...

Ist das sehr kompliziert???

Danke!
Wolfgang


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
procedure TBefund.wordOLESteuerung; 

var word ; variant;
    vorlage, zie1 : string;
    s : oleVariant;
    lbv : Tstrings;
    lbw : Tstrings; 
    x : integer;

begin
    screen.cursor:=crHourglass: 
    lbv := TStringList.Create;
    lbw := TStringList.Create: 

try
    // Es wird zuerst versucht, eine laufende Word-Instanz zu verwenden
    word := GetActiveOleObject('Word.Application'); 

except
    try
       // Läuft word noch nicht, wird eine neue Verbindung aufgebaut
       word := CreateOleObject('word.Application'); 
    except
       // schlägt sie fehl, gibt es ein Fehlermeldung
       showMessage('Microsoft word kann nicht starten.');
       screen.cursor :; crDefault;
       exit;
    end
end;

word.visible := true; 
vorlage := hauptprogramm.rfk.DOT_Pfad 
           + flbVorlagen.ltems[flbVorlagen.Itemindex]:
ziel    := hauptprogramm.rfk.DOC_Pfad
           + hauptprogramm.kde.Caption+' '
           + edBefundname.Text + '.doc';
copyfile(pchar(vorlage),pchar(ziel),FALSE);      // Kopie der Vorlage
Word.Documents.OpenOld(ziel);                    // Word97 kompatibel

for x :=  0 to lbV.Count -1 do begin 
  s := Word.Selection;
  s.find.text := lbv[x];                        // zB. lbv = #VORNAME# 
    s.find.Rep1acement.Text := lbW[x];            // ZB. lbw ="Bettina"
    s.find.Forward := TRUE;
    s.find.wrap := FALSE;
    s.find.Format := FALSE; 
    s.find.Matchcase := FALSE; 
    s.find.MatchWholeword := FALSE; 
    s.find.MatchWîldCards := FALSE;
    s.find.MatchSoundslike := FALSE;
    s.find.MatchAl1WordForms := FALSE; 
    s.Find.Execute(Replace:=2);                   // wdReplaceAll := 2 
end;

Word.ActiveDocument.Save;
// Word:=unassigned;
screen.cursor:=crDefault;
end;


Moderiert von user profile iconMartok: Quote- durch Delphi-Tags ersetzt


Tintenblut - Fr 17.12.10 13:10

Schwer? Definiere schwer.
Ich sag mal nein ;)

Aber mal eine Gegenfrage: Du hast jemanden, der dir das Implementieren, aber sich nicht auseinandersetzen will?
Wie geht das?


wolfgangschwarz1 - Fr 17.12.10 15:23

Der Programmierer der Software, die wir einsetzen, hat kein besonderes Interesse daran, seine Applikation/Programm mit openoffice zum Laufen zu bekommen. Ich hingegen schon. Und er hat gasagt, von seinen rund 50 Kunden, die das Programm verwenden, braucht das vielleicht kein anderer. Und darum hat er weiters gesagt, er würde die Möglichkeit im Programm für mich kostenlos einbauen, hat aber kein besonderes Interesse, sich stundenlang damit auseinanderzusetzen.

Ich hingegen schon, es fehlt mir leider an der programmiertechnischen Erfahrung. Ich würde mich auch stundenlang^2 hinsetzen, aber ich hatte bisher lediglich mit BASIC vom C=64 zu tun. Und nach einem Vierteljahrhundert Pause besteht meine derzeitige 'Programmiererfahrung' daraus, EXCEL bzw. OpenOfficeCalc für alle möglichen Einsätze zweckzuentfremden.

Gruß, Wolfgang


bummi - Fr 17.12.10 19:23

Ist zwar schon etwas älter, aber wer brauchen kann..


wolfgangschwarz1 - Sa 18.12.10 22:29

Dankesehr für die Hilfestellung!

Ich werde mir das jetzt am Wochenende mal durchlesen, mal sehen, ob ich daraus schlau werden. Und ich hoffe, dann im Anschluss funktioniert das auch mit Libreoffice, da es openoffice ja möglicherweise in der bekannten Form nicht mehr geben wird. Naja, mal sehen, ob ich das bereitgestellte Dokument verstehe.

Gruß, Wolfgang