Como automatizar o Microsoft Word para criar um novo documento usando translation from VPE for Csharp Visual

Traduções deste artigo Traduções deste artigo
ID do artigo: 316384 - Exibir os produtos aos quais esse artigo se aplica.
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 316383.
Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 313193.
Expandir tudo | Recolher tudo

Sumário

Este artigo passo a passo descreve como criar um novo documento no Microsoft Word usando automação do Microsoft Visual translation from VPE for Csharp 2005 ou Microsoft Visual translation from VPE for Csharp .NET.

Código de exemplo

O código de exemplo neste artigo demonstra como fazer o seguinte:
  • Inserir parágrafos com formatação e texto.
  • Procurar e modificar vários intervalos dentro de um documento.
  • Inserir tabelas, Formatar tabelas e preencha as tabelas com dados.
  • Adicione um gráfico.
Para criar um novo documento do Word usando automação do Visual translation from VPE for Csharp 2005 ou Visual translation from VPE for Csharp .NET, siga estas etapas:
  1. Inicie o Microsoft Visual Studio 2005 ou o Microsoft Visual Studio NET..
  2. No menu arquivo , clique em novo e, em seguida, clique em Project . Em Project Types , clique em projetos translation from VPE for Csharp Visual e, em seguida, clique em Windows Application em modelos . O Form1 é criado por padrão.

    Observação No Visual Studio 2005, clique em translation from VPE for Csharp Visual em vez de projetos translation from VPE for Csharp Visual .
  3. Adicione uma referência ao Microsoft Word Object Library . Para fazer isso, execute as seguintes etapas:
    1. No menu Project , clique em Add Reference .
    2. Na guia COM , localize Biblioteca de objetos do Microsoft Word e, em seguida, clique em Selecionar .

      Observação No Visual Studio 2005, você não tem clique em Selecionar .
      Observação Microsoft Office 2003 inclui assemblies de interoperabilidade primários (PIAs). Microsoft Office XP não inclui PIAs, mas podem ser baixados. Para obter mais informações sobre PIAs do Office XP, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      328912INFO: Microsoft Office XP PIAs estão disponíveis para download
    3. Clique em OK na caixa de diálogo Add References para aceitar as seleções. Se você for solicitado a gerar wrappers para as bibliotecas que você selecionou, clique em Sim .
  4. No menu Exibir , selecione a caixa de ferramentas para exibir a caixa de ferramentas e, em seguida, adicione um botão ao Form1.
  5. Clique duas vezes em Button1 . A janela de código para o formulário é exibida.
  6. Na janela código, substitua o código seguinte
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    com:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	object oMissing = System.Reflection.Missing.Value;
    	object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ 
    
    	//Start Word and create a new document.
    	Word._Application oWord;
    	Word._Document oDoc;
    	oWord = new Word.Application();
    	oWord.Visible = true;
    	oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    		ref oMissing, ref oMissing);
    
    	//Insert a paragraph at the beginning of the document.
    	Word.Paragraph oPara1;
    	oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
    	oPara1.Range.Text = "Heading 1";
    	oPara1.Range.Font.Bold = 1;
    	oPara1.Format.SpaceAfter = 24;    //24 pt spacing after paragraph.
    	oPara1.Range.InsertParagraphAfter();
    
    	//Insert a paragraph at the end of the document.
    	Word.Paragraph oPara2;
    	object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
    	oPara2.Range.Text = "Heading 2";
    	oPara2.Format.SpaceAfter = 6;
    	oPara2.Range.InsertParagraphAfter();
    
    	//Insert another paragraph.
    	Word.Paragraph oPara3;
    	oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
    	oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:";
    	oPara3.Range.Font.Bold = 0;
    	oPara3.Format.SpaceAfter = 24;
    	oPara3.Range.InsertParagraphAfter();
    
    	//Insert a 3 x 5 table, fill it with data, and make the first row
    	//bold and italic.
    	Word.Table oTable;
    	Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);
    	oTable.Range.ParagraphFormat.SpaceAfter = 6;
    	int r, c;
    	string strText;
    	for(r = 1; r <= 3; r++)
    		for(c = 1; c <= 5; c++)
    		{
    			strText = "r" + r + "c" + c;
    			oTable.Cell(r, c).Range.Text = strText;
    		}
    	oTable.Rows[1].Range.Font.Bold = 1;
    	oTable.Rows[1].Range.Font.Italic = 1;
    
    	//Add some text after the table.
    	Word.Paragraph oPara4;
    	oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oPara4 = oDoc.Content.Paragraphs.Add(ref oRng);
    	oPara4.Range.InsertParagraphBefore();
    	oPara4.Range.Text = "And here's another table:";
    	oPara4.Format.SpaceAfter = 24;
    	oPara4.Range.InsertParagraphAfter();
    
    	//Insert a 5 x 2 table, fill it with data, and change the column widths.
    	wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing);
    	oTable.Range.ParagraphFormat.SpaceAfter = 6;
    	for(r = 1; r <= 5; r++)
    		for(c = 1; c <= 2; c++)
    		{
    			strText = "r" + r + "c" + c;
    			oTable.Cell(r, c).Range.Text = strText;
    		}
    	oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2
    	oTable.Columns[2].Width = oWord.InchesToPoints(3);
    
    	//Keep inserting text. When you get to 7 inches from top of the
    	//document, insert a hard page break.
    	object oPos;
    	double dPos = oWord.InchesToPoints(7);
    	oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();
    	do
    	{
    		wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    		wrdRng.ParagraphFormat.SpaceAfter = 6;
    		wrdRng.InsertAfter("A line of text");
    		wrdRng.InsertParagraphAfter();
    		oPos = wrdRng.get_Information
                           (Word.WdInformation.wdVerticalPositionRelativeToPage);
    	}
    	while(dPos >= Convert.ToDouble(oPos));
    	object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
    	object oPageBreak = Word.WdBreakType.wdPageBreak;
    	wrdRng.Collapse(ref oCollapseEnd);
    	wrdRng.InsertBreak(ref oPageBreak);
    	wrdRng.Collapse(ref oCollapseEnd);
    	wrdRng.InsertAfter("We're now on page 2. Here's my chart:");
    	wrdRng.InsertParagraphAfter();
    
    	//Insert a chart.
    	Word.InlineShape oShape;
    	object oClassType = "MSGraph.Chart.8";
    	wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing, 
    		ref oMissing, ref oMissing, ref oMissing,
    		ref oMissing, ref oMissing, ref oMissing);
    
    	//Demonstrate use of late bound oChart and oChartApp objects to
    	//manipulate the chart object with MSGraph.
    	object oChart;
    	object oChartApp;
    	oChart = oShape.OLEFormat.Object;
    	oChartApp = oChart.GetType().InvokeMember("Application",
    		BindingFlags.GetProperty, null, oChart, null);
    
    	//Change the chart type to Line.
    	object[] Parameters = new Object[1];
    	Parameters[0] = 4; //xlLine = 4
    	oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,
    		null, oChart, Parameters);
    
    	//Update the chart image and quit MSGraph.
    	oChartApp.GetType().InvokeMember("Update",
    		BindingFlags.InvokeMethod, null, oChartApp, null);
    	oChartApp.GetType().InvokeMember("Quit",
    		BindingFlags.InvokeMethod, null, oChartApp, null);
    	//... If desired, you can proceed from here using the Microsoft Graph 
    	//Object model on the oChart and oChartApp objects to make additional
    	//changes to the chart.
    
    	//Set the width of the chart.
    	oShape.Width = oWord.InchesToPoints(6.25f);
    	oShape.Height = oWord.InchesToPoints(3.57f);
    
    	//Add text after the chart.
    	wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	wrdRng.InsertParagraphAfter();
    	wrdRng.InsertAfter("THE END.");
    
    	//Close this form.
    	this.Close();
    }
    					
  7. Role até o início da janela de código. Adicione a seguinte linha ao final da lista de diretivas usando :
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  8. Pressione F5 para criar e executar o programa.
  9. Clique em Button1 para começar a automação do Word e para criar o documento.
Depois que o código for concluída, examine o documento que foi criado para você. O documento contém duas páginas de parágrafos formatados, tabelas e um gráfico.

Usar um modelo

Se você estiver usando automação para criar documentos que estão em um formato comum, você pode se beneficiar de iniciar o processo com um novo documento baseado em um modelo pré-formatado. Usando um modelo com seu cliente de automação do Word tem duas vantagens significativas sobre criação de um documento do nada:
  • Você pode ter maior controle sobre a formatação e posicionamento de objetos em seus documentos.
  • Você pode criar seus documentos com menos código.
Usando um modelo, você pode ajustar o posicionamento de tabelas, parágrafos e outros objetos dentro do documento, bem como incluir esses objetos de formatação. Usando automação, você pode criar um novo documento baseado no seu modelo com o código, como a seguir:
object oTemplate = "c:\\MyTemplate.dot";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
	ref oMissing, ref oMissing);
				
em seu modelo, você pode definir indicadores para que sua automação cliente pode preencher texto variável em um local específico no documento, como segue:
object oBookMark = "MyBookmark";
oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";
				
outra vantagem de usar um modelo é que você pode criar e armazenar estilos de formatação que você deseja aplicar em tempo de execução, como a seguir:
object oStyleName = "MyStyle";
oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);
				
- ou -
object oStyleName = "MyStyle";
oWord.Selection.set_Style(ref oStyleName);
				

Referências

Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
301659COMO: Automatizar Microsoft Word para executar a mala direta do Visual .NET translation from VPE for Csharp
302902COMO: Binding para servidores de automação do Office com o Visual translation from VPE for Csharp .NET
Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:
Microsoft Office Development com Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Word no Office (artigo online MSDN)
http://msdn2.microsoft.com/en-us/library/aa201330(office.11).aspx

Word mais um (artigo online MSDN)
http://msdn2.microsoft.com/en-us/library/aa201332(office.11).aspx

Propriedades

ID do artigo: 316384 - Última revisão: quinta-feira, 17 de maio de 2007 - Revisão: 7.7
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Palavras-chave: 
kbmt kbautomation kbhowtomaster KB316384 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: 316384

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