WORD文書に他のファイルからの文字列を追加(位置はいろいろです)したいと思っています。
Delphiの簡単なプログラムなら作れるのですが、
DelphiでWORDを操作する方法がまったくわかりません。
インターネットを検索して、Mr.XRAYさんのHPも見たのですが、わからずじまいです。
どなたか、とりあえず、Form上のボタンを押したらWORD文書を開くプログラムを教えていただけないでしょうか?
それと、WORDApplicationとWORDDocumentはどう違うのでしょうか?
Turbo Delphi2006を使っています。
最終的になにがしたいのかわかりませんが、
そのMr.XRAYさんのワード操作フォームExを使うのが手っ取り早いと思います。
一番簡単にやるならWordの文章だけをTXTファイルで別保存して、
それをTMemoあたりで読み込むのがラクかと思います。
Mr.XRAYさんのHPにあったワード操作フォームをコンパイルしようとしたのですが、
「FastMM4.dcuが見つかりません」というエラーが出ました。
このファイルはどこから入手したらいいんでしょうか?
http://sourceforge.net/projects/fastmm/files/
こちらになります。
なお、Mr.XRAYさんのサイトにも記述がありますが、
Turbo(2006) のメモリマネージャは FastMM 相当です。
http://mrxray.on.coocan.jp/Others/UsageFastMM.htm
新しい(そして完全版の)FastMM を使う必要がないのであれば、
uses から FastMM を外してコンパイルする事が出来ます。
WordApplication1.Connect;
WordApplication1.Documents.Add(Template, NewTemplate, _WordDocumentType,_Visible);
//WordDocumentオブジェクトの接続処理
WordDocument1.ConnectTo (WordApplication1.ActiveDocument as _document);
//WordFontオブジェクトの接続処理
WordFont1.ConnectTo(WordApplication1.Selection.Font);
WordApplication1.Selection.TypeText('こんにちは');
こんな風に記載していけばOkです。
一番簡単なのは、Word上でマクロ(VBA)を操作して、VBAで作られたコードをDelphiに置き換えて
いけばいいのですが、若干Wordのバージョンによっても命令が異なったり、中々奥が深いです。
以上
DEKOさんありがとうございます。
>uses から FastMM を外してコンパイルする事が出来ます。
とりあえず、なかやさんの方法でやってみます。
でも、
WordApplication1.Documents.Add(Template, NewTemplate, _WordDocumentType,_Visible);
の、NewTemplate, _WordDocumentType,_Visibleでエラーが出る(赤い波線が出る)のですが、usesに何か追加する必要があるのでしょうか?
Mr.XRAYです.
>(Template, NewTemplate, _WordDocumentType,_Visible);
これらは引数の変数名です.
このままで「未定義の識別子」のエラーとなります.
例えば以下のコードもA,Bで同じエラーとなります.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
function HogeHoge(A,B : Integer): Integer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
C : Integer;
begin
C := HogeHoge(A,B);
end;
function TForm1.HogeHoge(A, B: Integer): Integer;
begin
Result := A + B;
end;
end.
引数の変数には,この場合,必ず値を代入しておく必要があります.
Delphiでは,必ず変数の型を定義しなければ,その変数は使用できません.
型の定義をプログラムのどこで行うかは,その変数を,そのプログラム内で
どうのように利用するかによって,プログラムする方が決めます.
上のコードの場合,例えば,Button1クリック内でしか使用しないのであれば,
以下の様にも書けます.
procedure TForm1.Button1Click(Sender: TObject);
var
C : Integer;
A,B : Integer;
begin
A := 100;
B := 30;
C := HogeHoge(A,B);
end;
>(Template, NewTemplate, _WordDocumentType,_Visible);
これらの引数の型については,
[Servers]タブのコンポーネントの場合,Delphiのヘルプには説明がありませんが,
VBAのヘルプか以下の方法で知ることができます.
あるいは,ソースコード(Turbo 2006って,ソースコードがないのかな?)で確認できます.
変数の意味は,変数の名前から推測するか,ワードのVBAで調べることになります.
コード補完機能
http://mrxray.on.coocan.jp/Others/A_IDETechnique.htm#05
関数の宣言表示
http://mrxray.on.coocan.jp/Others/A_IDETechnique.htm#06
>上のコードの場合,例えば,Button1クリック内でしか使用しないのであれば,
>以下の様にも書けます.
引数の変数名は,定義してある引数名と同じである必要はありません.
先程の場合,例えば,以下でも結果は同じです.
procedure TForm1.Button1Click(Sender: TObject);
var
C : Integer;
D,E : Integer;
begin
D := 100;
E := 30;
C := HogeHoge(D,E);
end;
ツイート | ![]() |