1

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!');
4

1 に答える 1