如何用c语言word文件页数,如何使用 Word automation 对文档每节中的页码进行计数 - Office | Microsoft Docs...

如何使用 Word automation 计算文档每节中的页面数

2020/3/18

适用于:

Microsoft Word

本文内容

总结

本文介绍如何使用 Word 中的自动化功能来确定文档的每一节中的页面数。

详细信息

下面的示例代码使用保存到 C:\Mydoc.doc. 的文档。若要测试示例代码,请创建一个包含多个节和多个页面的新文档,并将其另存为 C:\Mydoc.doc,或更改代码中的文档路径以引用您的某个现有 Word 文档。

注意:示例代码假定分节符强制新的分页符,且每个页面中不包含多个部分。 因此,在创建用于测试示例代码的 C:\Mydoc.doc Word 文档的过程中插入分节符时,应选择 "下一页" 作为分节符类型。

Visual Basic 示例

在 Visual Basic 中,创建一个新的标准 EXE 项目。 默认情况下会创建 Form1。

向 Form1 中添加一个命令按钮,并将以下代码添加到该按钮的 Click 事件:

Dim oApp As Object

Dim oDoc As Object

Dim oTbl As Object

'Start Word and open the document.

Set oApp = CreateObject("Word.Application")

'For Word 2007, change the path to "c:\mydoc.docx"

Set oDoc = oApp.Documents.Open("c:\mydoc.doc")

'Repaginate the document.

oDoc.Repaginate

'Iterate each section in the document to retrieve the end page of the

'document and compute the page count in that section. The results are

'displayed in the Immediate window.

Dim oSec As Object

Dim nStartPg As Integer, nEndPg As Integer, nSecPages As Integer

Dim NumSections As Integer

NumSections = oDoc.Sections.Count

nStartPg = 1

For Each oSec In oDoc.Sections

nEndPg = oSec.Range.Information(3) - 1 'wdActiveEndPageNumber=3

'Account for the last page.

If oSec.Index = NumSections Then nEndPg = nEndPg + 1

nSecPages = nEndPg - nStartPg + 1

Debug.Print "Section " & oSec.Index & " --", _

"StartPage: " & nStartPg, _

"EndPage: " & nEndPg, _

"TotalPages: " & nSecPages

nStartPg = nEndPg + 1

Next

'Close the document without saving changes and quit Word.

oDoc.Close False

oApp.Quit

按 F5 运行该应用程序,然后单击窗体上的按钮。 代码会在 "即时" 窗口中显示每个节的页数。

MFC 示例

按照 Microsoft 知识库中的以下文章中的步骤1到步骤12创建一个示例项目,该项目使用在 MSWord9 类型库中定义的 IDispatch 接口和 member 函数。

必须删除 Excel automation 库。

在 AutoProjectDlg 顶部,添加以下行之一:

在 Word 2002 和更高版本的 Word 中,添加以下行:

#include "MSWord.h"

在 Word 2000 中,添加以下行:

#include "MSWord9.h"

在 AutoProjectDlg 中,将以下代码添加到 CAutoProjectDlg:: OnRun ()。

COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

//Start Word.

_Application oWord;

oWord.CreateDispatch("Word.Application");

oWord.SetScreenUpdating(FALSE);

//Open the document.

Documents oDocs = oWord.GetDocuments();

// For Word 2007, use:

// _Document oDoc = oDocs.Open(COleVariant("c:\\mydoc.docx"),

// vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt, vOpt, vOpt,vOpt,vOpt,vOpt,vOpt);

_Document oDoc = oDocs.Open(COleVariant("c:\\mydoc.doc"),

vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt, vOpt, vOpt,vOpt,vOpt,vOpt,vOpt);

//Repaginate the document.

oDoc.Repaginate();

//Iterate the collection of sections in the document to retrieve the page

//count for each section.

Sections oSecs = oDoc.GetSections();

long NumSections = oSecs.GetCount();

long i;

long StartPage=1; //Section start page.

long EndPage=0; //Section end page.

long NumPages=0; //Number of pages in the section.

for(i=1;i<=NumSections;i++)

{

Section oSec = oSecs.Item(i);

Range oSecRange = oSec.GetRange();

VARIANT vInfo = oSecRange.GetInformation(3L);//wdActiveEndPageNumber=3

//If oSec.Index = NumSections Then nEndPg = nEndPg + 1

if(oSec.GetIndex()== NumSections) {EndPage++;}

EndPage = vInfo.lVal-1;

if(i==NumSections) {EndPage++;} //Account for the last section.

NumPages = EndPage - StartPage +1;

char buf[5];

sprintf(buf,"%d", NumPages);

TRACE1("Section %d\n", oSec.GetIndex());

TRACE3(" StartPage: %d EndPage: %d TotalPages: %d\n",

StartPage, EndPage, NumPages);

StartPage = EndPage + 1;

}

//Close the document without saving the changes, and then exit Word.

oDoc.Close(COleVariant((short)false), vOpt, vOpt);

oWord.Quit(COleVariant((short)false), vOpt, vOpt);

编译并运行项目。

出现对话框时,单击 "运行"。 计数结果将显示在 "调试" 窗口中。 您必须将 NumPages 变量拖到调试窗口。

(c) Microsoft Corporation 2001,保留所有权限。 Microsoft Corporation 的 Lori Turner。

引用

有关详细信息,请参阅以下 Microsoft 开发人员网络(MSDN)网站:

若要了解详细信息,请查看 Microsoft 知识库中的文章:

220911如何自动化 Microsoft Word 使用 Visual c + + 和 MFC 执行邮件合并

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值