Como recortar e colar do campo geral em um documento do Word

Traduções deste artigo Traduções deste artigo
ID do artigo: 172847 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo ilustra como a "Selecionar tudo" e "Recortar e colar" um documento do Word incorporado de um campo geral para o Word outro documento usando código e automação de OLE.

Mais Informações

O exemplo a seguir consiste em duas seções. A primeira seção é criar um documento de mala direta do Word com indicadores.

Observação Este exemplo funciona somente no Microsoft Word 97.

Criar um documento de mala direta do Word 97

  1. Crie um novo documento do Word no Word 97 e formatar o documento da seguinte maneira:
       Dear NAME,
    
           CONTENT
    
       Sincerely,
    
       John Smith
  2. Crie um indicador para CONTENT e NAME (os nomes de indicadores são CONTENT e um nome, respectivamente). Para criar esses indicadores, execute essas etapas:
    1. Realçar itens no documento (por exemplo, CONTENT).
    2. No menu Inserir , clique em indicador .
    3. Na caixa de diálogo Bookmark , digite nome do indicador e, em seguida, clique em Adicionar .
    4. Repita as etapas a até c para o indicador de nome.
  3. Salve o documento do Word como mytest.doc.

Visual FoxPro específicas itens

  1. Criar uma tabela chamada "mydoc" com a seguinte estrutura:
          Field name    Type       Size
          -----------------------------
          Content       General     4
          Name          Character   10
  2. Deve haver apenas um registro nesta tabela. No campo geral, cole em qualquer documento do Word existente. No campo nome , coloque uma expressão de dez caracteres.
  3. Feche a tabela.
  4. Criar um formulário é denominado mail.scx no Visual FoxPro que tenha somente um comando de botão.
  5. Colocar o código a seguir no método Click do botão de comando :
          LOCAL oWordObj
          *   Open table
          IF !USED("mydoc")
            USE mydoc
          ELSE
            SELECT mydoc
          ENDIF
    
          *   Open a Word Object
          oWordObj = CREATEOBJECT("Word.Application")
    
          *   Next open the original document in a second window
          oWordObj.Documents.Open("C:\VFP50\mytest.doc")
    
          *   Retrieve the number of bookmarks defined in DOC
          pnCountMarks = oWordObj.ActiveDocument.Bookmarks.Count
    
          *   Store bookmarks in an array
          DIMENSION aMark[pnCountMarks]
    
          FOR pnCount = 1 TO pnCountMarks
            aMark[pnCount] = oWordObj.ActiveDocument.Bookmarks(pnCount).Name
          ENDFOR
    
          *   Loop through all the bookmarks in the document
          FOR pnCount = 1 TO pnCountMarks
            pcMarkName = UPPER(aMark[pnCount])
    
         *     Move to the next bookmark
            WITH oWordObj.ActiveDocument.Bookmarks(pcMarkName).Range
    
              DO CASE
                 CASE pcMarkName = "ANAME"
                   .text = ALLTRIM(Name)
                 CASE pcMarkName = "CONTENT"  && goes to bookmark
                   oWordObj.WordBasic.ww7_editgoto("CONTENT")
            *         Starts Word
                   oWord=GETOBJECT(,"WORD.basic")
            *         Creates Form in VFP
                   frmWord=CREATEOBJECT("FORM")
            *         Adds OLE object to form
                   frmWord.ADDOBJECT("OBJWORDDOC","OLEBOUNDCONTROL")
            *         Sets the control source
                   frmWord.OBJWORDDOC.CONTROLSOURCE="mydoc.content"
            *         frmWord.show
                   frmWord.OBJWORDDOC.DoVerb(0) && Default Word doc is 'Edit'
                   oWord.EditSelectAll
                   oWord.EditCopy
                   oWordObj.WordBasic.editpaste
              ENDCASE
            ENDWITH
          ENDFOR
          * Release the Word.Basic object that edits the General field
          * contents, and close the Form that was opened to access the VFP
          * table with that General field.
    
          Release oWord
          Release frmWord
    
          *    Save and Print the document
          oWordObj.WordBasic.FilePrint(0) && Turn background printing off
          WAIT WINDOW "Printing in Progress" TIMEOUT 3
    
          oWordObj.WordBasic.FileSaveAs("c:\VFP50\DEMO1.DOC")
    
          *    Close Word
          oWordObj.WordBasic.DocClose
    
          *    Quit Word, release the object and clear the desktop
          oWOrdObj.Quit
          Release oWordObj
          Thisform.release
  6. Salve e execute o formulário. Clique no botão de comando , e Word imprime o documento com o nome e o conteúdo da mala direta.
Observação Com o comando GetObject() , o Word 97 procurará um documento com o nome desejado. Se você deseja se referir a uma instância já lançada contendo seu documento do word, você deve deixar o primeiro parâmetro vazia em vez de usar uma seqüência vazia, caso contrário, você pode iniciar uma nova instância (invisível) do Word que contém um novo documento.

Observação Em ocasiões aleatórios essa solução pode causar um erro OLE inexplicado na seguinte linha de código:
      WITH oWordObj.ActiveDocument.Bookmarks(pcMarkName).Range
segue a mensagem de erro:
Exceção de IDispatch OLE código 0 do Microsoft Word. O membro solicitado da coleção não existe.

Propriedades

ID do artigo: 172847 - Última revisão: quinta-feira, 9 de fevereiro de 2006 - Revisão: 3.4
A informação contida neste artigo aplica-se a:
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Palavras-chave: 
kbmt kbautomation kbhowto kbinterop KB172847 KbMtpt
Tradução automática
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: 172847

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com