关于Word的页数(50分)

  • 主题发起人 主题发起人 Haishen
  • 开始时间 开始时间
H

Haishen

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
1、如何知道Word文档的总页数
2、查找到一个Word文档中的字符串,如何知道当前所在的页数
 
请问大家一个很急的问题,谢谢了。
在delphi里用CreateOLEObject建立与word的连接后,如何在delphi里将word的光标定位到某word文件的最后一页的最后一行,然后在该行插入一些文字。

这个问题困扰好久了,由于我没能完成账号确认,故不能直接发文问大家了。所以借haishen的地方提出这个问题,请大家帮我解决一下,万分感激。
如果我能给分的话,我会给分的,不会吝啬。
再次感谢!!!!
 
下面这些从前的资料,你看看吧
给你几个函数:
GetDocPages : 得到文档的总页数;
GetCurrentPage : 得到当前关标所在的页码
GotoNextPage : 移到下一页开始处
GotoFirstPage : 移到第一页开始处

对于你的问题流程是:(其中WordApp : TWordApplication, WordDoc : TWordDocument)

GotoFirstPage(WordApp);
插入一些内容;
while GetCurrentPage(WordApp) < GetDocPages(WordDoc) do
begin
GotoNextPage(WordApp);
插入一些内容
end;

上面所说的几个函数代码如下:
// get the document's pages
function TForm1.GetDocPages(WrdDoc : TWordDocument) : integer;
var
ActDoc : Variant;
begin
ActDoc := CreateOleObject('Word.Document');
ActDoc := WrdDoc.DefaultInterface;
result := ActDoc.BuiltInDocumentProperties[wdPropertyPages].Value;
ActDoc := unassigned;
end;

// get current page index
function TForm1.GetCurrentPage(WrdApp : TWordApplication) : integer;
begin
result := WrdApp.Selection.Information[wdActiveEndPageNumber];
end;

// go to next page
procedure TForm1.GotoNextPage(WrdApp: TWordApplication);
begin
WrdApp.Browser.Next;
end;

// go to first page
procedure TForm1.GotoFirstPage(WrdApp: TWordApplication);
var
WdUnit,WdCount,wdExtend : OleVariant;
begin
WdUnit := wdScreen;
wdCount := 10;
wdExtend := EmptyParam;
while true do
if WrdApp.Selection.MoveUp(WdUnit,wdCount,wdExtend) = 0 then break;
end;

http://www.delphibbs.com/delphibbs/DispQ.asp?LID=758501
怎样用delphi控制word在页的最后增加一页,然后再写入一些内容
 
在你的启发下,我找到了一个实现的简单方法。如下是代码。
procedure TForm1.Button7Click(Sender: TObject);
var
wordhandle:olevariant;
result1,result2:integer;
resultpage1,resultpage2:integer;
begin
Wordhandle:=CreateOLEObject('Word.Application');
Wordhandle.Documents.open('d:/jingdian.doc',true);
wordhandle.visible:=true;
////////////////////////////////////////
repeat
resultpage1:=wordhandle.activedocument.builtindocumentproperties[wdpropertypages];
result1:=wordhandle.activedocument.builtindocumentproperties[wdpropertylines];
wordhandle.selection.movedown(wdline,result1);
wordhandle.Selection.TypeParagraph;
resultpage2:=wordhandle.activedocument.builtindocumentproperties[wdpropertypages];
until(resultpage2>resultpage1);
wordhandle.Selection.TypeBackspace;
edit1.Text:=inttostr(result1);
wordhandle.ActiveDocument.Save;
end;

很好用的说。
d7,officexp
 
后退
顶部