Como usar a automação do Word para contar o número de páginas em cada seção de um documento

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 293861
Sumário
Este artigo descreve como você pode usar automação com o Word para determinar o número de páginas em cada seção de um documento.
Mais Informações
O código de exemplo a seguir usa um documento é salvo C:\Mydoc.doc. Para testar o código de exemplo, ou criar um novo documento com várias seções e várias páginas e salvá-lo como C:\Mydoc.doc ou alterar o caminho do documento no código para fazer referência a uma o Word existente documentos.

Observação : O código de exemplo assume que uma quebra de seção força uma nova quebra de página e que cada página contém mais de uma seção. Portanto, quando você insere quebras de seção ao criar o documento do Word C:\Mydoc.doc para testar o código de exemplo, você deve escolher Avançar como o tipo de quebra de seção.

Exemplo do Visual Basic

  1. No Visual Basic, crie um novo projeto Standard EXE. O Form1 é criado por padrão.
  2. Adicionar um botão de comando para Form1 e adicione o seguinte código para Click do botão evento:
        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					
  3. Pressione F5 para executar o aplicativo e clique no botão no formulário. O código exibe a contagem de páginas para cada seção na janela Verificação imediata.

Exemplo do MFC

  1. Execute as etapas 1 a 12 no seguinte artigo na Base de dados de Conhecimento da Microsoft para criar um projeto de exemplo que usa o IDispatch interfaces e funções de membro que são definidas na biblioteca de tipos MSWord9.olb:
    178749Como criar um projeto de automação usando MFC e uma biblioteca de tipos
  2. Observação Você deve remover a biblioteca de automação do Excel.

    Na parte superior da AutoProjectDlg.cpp, adicione um dos seguintes linhas:
    • No Word 2002 e versões posteriores do Word, adicione a seguinte linha:
      #include "MSWord.h"
    • No Word 2000, adicione a seguinte linha:
      #include "MSWord9.h"
  3. Adicione o seguinte código ao CAutoProjectDlg::OnRun() em AutoProjectDlg.cpp.
    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);					
  4. Compilar e executar o projeto.
  5. Quando a caixa de diálogo for exibida, clique em Executar . Os resultados de contagem são exibidos na janela Verificação imediata. Você deve arrastar a variável NumPages para a janela Verificação imediata.

(c) Microsoft Corporation 2001, todos os direitos reservados. Contribuições de Lori B. Turner, Microsoft Corporation.

Referências
Para obter mais informações, consulte o seguinte Microsoft Developer sites Network (MSDN (em INGLÊS) da Web:
Microsoft Office Development com Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Microsoft Office Developer Center
http://msdn.microsoft.com/office
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
253235ARQUIVO: OFFAUTMN.EXE discute o Office 97 e 2000 automação e fornece código de exemplo
220607Como automatizar o Microsoft Word para executar a mala direta a partir do Visual Basic
220911Como automatizar o Microsoft Word para executar uma mala direta usando o Visual C++ e MFC
183369Como usar a automação para executar uma macro do Word com argumentos
WD2007

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 293861 - Última Revisão: 07/05/2007 15:36:38 - Revisão: 7.1

Microsoft Office Word 2007, Microsoft Office Word 2003, Microsoft Word 2002 Standard Edition, Microsoft Word 2000 Standard Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Foundation Class Library 4.2

  • kbmt kbexpertiseinter kbautomation kbhowto KB293861 KbMtpt
Comentários