全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2179
推到 Plurk!
推到 Facebook!

delphi 控制操作,怎么替換WORD里面頁眉的文字?

答題得分者是:pceyes
yxhua240
一般會員


發表:5
回覆:5
積分:2
註冊:2007-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-03 16:52:05 IP:59.58.xxx.xxx 訂閱
delphi 控制操作,怎么替換WORD里面頁眉的文字?
比如頁眉有文字:#hh#,想通過delphi,取得一個變量值,替換掉#hh#·
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-24 23:42:55 IP:122.127.xxx.xxx 訂閱
修改自 難以歸類主題的討論區(Delphi) » 利用Delphi的OLE將資料匯至Excel
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=94715

[code delphi]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, comobj;

type
TForm1 = class(TForm)
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button3Click(Sender: TObject);
const
// Word巨集內容 用錄製巨集產生(其實我也看不大懂 哈!)
// 巨集名稱: Macro1
// 參數 : Pa1
// 換目標字串 : #hh#
sMacro3: String =
'Sub Macro1(Pa1)'#13#10
' ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader'#13#10
' Selection.Find.ClearFormatting '#13#10
' Selection.Find.Replacement.ClearFormatting '#13#10
' With Selection.Find '#13#10
' .Text = "#hh#" '#13#10
' .Replacement.Text = Pa1 '#13#10
' .Forward = True '#13#10
' .Wrap = wdFindContinue '#13#10
' .Format = False '#13#10
' .MatchCase = False '#13#10
' .MatchWholeWord = False '#13#10
' .MatchByte = True '#13#10
' .MatchAllWordForms = False '#13#10
' .MatchSoundsLike = False '#13#10
' .MatchWildcards = False '#13#10
' .MatchFuzzy = False '#13#10
' End With '#13#10
' Selection.Find.Execute Replace:=wdReplaceAll '#13#10
'End Sub ';
var
CM, CM1 : OleVariant;
OleWord : Variant;
OleDoc : Variant;
ModuleNm : String;
Begin
try
// 打開 MS-Word
try
OleWord := GetActiveOleObject('Word.Application');
except
OleWord := CreateOleObject('Word.Application');
end;
OleWord.Visible := True;
OleWord.DisplayAlerts := False;
OleDoc := OleWord.documents.Open('d:\test\vbatest\1111.doc');
ModuleNm:='M3';
try
CM := OleDoc.VBProject.VBComponents.Item(ModuleNm).CodeModule;
CM.DeleteLines(1, CM.CountOfLines);
CM.InsertLines(1, sMacro3);
except
CM1 := OleDoc.VBProject.VBComponents.Add(1);
CM1.Name := ModuleNm;
CM1.CodeModule.AddFromString(sMacro3);
end;
OleWord.Run('Macro1', '新的頁眉');
showmessage('置換成功');
except
ShowMessage('錯誤發生');
VarClear(OleDoc);
OleWord.Quit;
VarClear(OleWord);
end;
end;


[/code]
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-09-24 23:48:59, 註解 無‧
yxhua240
一般會員


發表:5
回覆:5
積分:2
註冊:2007-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-27 22:53:02 IP:59.60.xxx.xxx 訂閱
非常感谢楼上大大帮忙!问题解决了!
困扰了几个月``兴奋。。原来可以这样用宏。
系統時間:2024-05-05 6:44:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!