Erstellung von Word-Dokumenten funktioniert nicht

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Erstellung von Word-Dokumenten funktioniert nicht

Beitrag von Kay »

Hallo zusammen,

ich habe einige Probleme bei der Erstellung eines Word-Dokumentes. Ich habe dazu folgenden Code erstellt:

Code: Alles auswählen

var
  vMSWord, vWDocument: Variant;
begin
  If SaveDialog1.Execute Then
  begin
    vMSWord := CreateOleObject('Word.Application');
    vMSWord.Visible := False;
    vWDocument := vMSWord.Documents.Add;
    vMSWord.Selection.InsertAfter(Memo1.Text);
    vWDocument.SaveAs(SaveDialog1.FileName);
    vWDocument.Close;
    vMSWord.Quit;
    vMSWord := Unassigned;
  end;
end;
Das Problem besteht nun darin, dass kein Word-Dokument erstellt wird. Wenn ich den Befehl zum Speichern und Beenden von Word auskommentiere und Word sichtbar mache, dann stelle ich fest, dass Word einwandfrei gestartet und auch ein neues Dokument erstellt wird. Der Text des Memos wird allerdings gar nicht übernommen. Unabhängig davon, wie viele Zeilen das Memo enthält, in Word erscheinen nur zwei kryptische Zeichen im Dokument und die Speicherung klappt wie gesagt gar nicht. Wo genau liegt mein Fehler?

Viele Grüße
Kay

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Erstellung von Word-Dokumenten funktioniert nicht

Beitrag von Antrepolit »

Hallo Kay,

mag sein, dass ich mich nun bloß blamiere,
aber fehlt da nicht noch ein connect?

Code: Alles auswählen

If SaveDialog1.Execute Then
  begin
    vMSWord := CreateOleObject('Word.Application');
 
   [b]vMSWord.Connect;[/b]
 
    vMSWord.Visible := False;
Gruß
Grüße, Antrepolit

care only if your os is really burning

Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Re: Erstellung von Word-Dokumenten funktioniert nicht

Beitrag von Kay »

Hallo Antrepolit,

eine Connect-Methode gibt's doch für dieses OLE-Objekt gar nicht.
Der Witz an der Sache ist auch, dass Word ja einwandfrei startet; nur der Text des Memos wird aus irgendwelchen Gründen nicht in das Word-Dokument übernommen.

Viele Grüße
Kay

Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Re: Erstellung von Word-Dokumenten funktioniert nicht

Beitrag von Kay »

Hallo,

also ich hab das Problem jetzt gelöst.
Für alle, die vielleicht ein ähnliches Problem haben: Der Trick besteht darin, den Text nicht direkt zu übergeben, sondern ihn in einer Variable vom Typ OleVariant zwischenzuspeichern und diese dann zu übergeben. Äquivalent dazu muss auch der Dateiname behandelt werden.

Code: Alles auswählen

var
  vMSWord, vWDocument, vWText: OleVariant;
begin
  If SaveDialog1.Execute Then
  begin
    vMSWord := CreateOleObject('Word.Application');
    vMSWord.Visible := False;
    vWDocument := vMSWord.Documents.Add;
    vWText := UTF8ToSys(Memo1.Text);
    vMSWord.Selection.InsertAfter(vWText);
    vWText := UTF8ToSys(SaveDialog1.FileName);
    vWDocument.SaveAs(vWText);
    vWDocument.Close;
    vMSWord.Quit;
    vMSWord := Unassigned;
  end;
end;
Viele Grüße
Kay

Antworten