delphi 控制操作,怎么替換WORD里面頁眉的文字? |
答題得分者是:pceyes
|
yxhua240
一般會員 發表:5 回覆:5 積分:2 註冊:2007-12-21 發送簡訊給我 |
|
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
修改自 難以歸類主題的討論區(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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |