FreePascal で Word 文書を開き、テキストとデータを追加してから閉じようとしています。私は接続に成功し、ドキュメントに 1 行を書き込むことができましたが、それ以上のことはすべて私を打ち負かしています。現在、この Visual Basic リファレンスでメソッドの詳細を試しています。これは、FreePascal が物事を処理する方法とかなり似ています。
基本的に、Lazarus と Word OLE の関係が実際にどのように機能するかを誤解していると思います。構築できる簡単なドキュメントを作成する方法の例を誰か教えてもらえますか?
次のコードは、ドキュメントを開きますが、その内容を完全に置き換えます
program officAuto;
{$IFDEF FPC}
{$MODE Delphi}
{$ELSE}
{$APPTYPE CONSOLE}
{$ENDIF}
uses
SysUtils, Variants, ComObj;
const
ServerName = 'Word.Application';
var
Server, Doc : Variant;
oPara : Variant;
w:widestring;
begin
if Assigned(InitProc) then
TProcedure(InitProc);
try
Server := CreateOleObject(ServerName);
except
WriteLn('Unable to start Word.');
Exit;
end;
w:= UTF8Decode('c:\mydoc.docx');
Server.Visible := True; {Make Word visible}
Doc := Server.Documents.Open(w);
Doc.Range.Text := 'This is a Heading';
Doc.Range.Font.Bold := True;
Doc.Format.SpaceAfter := 24;
end.
これに対して、上記のコードに基づいて、ブックマークに文字列を出力しようとすると、ドキュメントが開かれ、コンテンツが保持され、ブックマークに移動してから何も実行されません。
w:= UTF8Decode('c:\mydoc.docx');
Server.Visible := True;
Doc := Server.Documents.Open(w);
oPara := Doc.Content.Paragraphs.Add(Doc.Bookmarks.Item('\Bookmark1').Range);
oPara := Doc.Range.Text('Where will this appear if at all!');