Per una versione di Microsoft Visual C# .NET di questo articolo, vedere 316384.
Per una versione di Microsoft Visual Basic 6.0 di questo articolo, vedere 313193.
Riepilogo
Questo articolo dettagliato descrive come creare un nuovo documento in Word usando l'automazione da Visual Basic .NET.
Codice di esempio
Il codice di esempio in questo articolo illustra come eseguire le operazioni seguenti:
-
Inserire paragrafi con testo e formattazione.
-
Esplorare e modificare vari intervalli all'interno di un documento.
-
Inserire tabelle, formattare tabelle e popolare le tabelle con dati.
-
Aggiungere un grafico.
Per creare un nuovo documento di Word tramite l'automazione da Visual Basic .NET, seguire questa procedura:
-
Avviare Microsoft Visual Studio .NET. Scegliere Nuovo dal menu File e quindi fare clic su Proietta. In Tipi di progetto fare clic su Progetti Visual Basic e quindi su Applicazione Windows in Modelli. Form1 viene creato per impostazione predefinita.
-
Aggiungere un riferimento alla libreria di oggetti di Microsoft Word. A tal fine, attenersi alla seguente procedura:
-
Scegliere Aggiungi riferimento dal menu Progetto.
-
Nella scheda COM individuare la Raccolta oggetti di Microsoft Word e fare clic su Seleziona.
Nota Microsoft Office 2003 e versioni successive di Office includono gli assembly di interoperabilità primario (PIA). Microsoft Office XP non include i PIA, ma è possibile che vengano scaricati.
-
Fare clic su OK nella finestra di dialogo Aggiungi riferimenti per accettare le selezioni. Se viene richiesto di generare wrapper per le raccolte selezionate, fare clic su Sì.
-
-
Nel menu Visualizza selezionare Casella degli strumenti per visualizzare la casella degli strumenti e quindi aggiungere un pulsante a Form1.
-
Fare doppio clic su Button1. Viene visualizzata la finestra del codice per il modulo.
-
Nella finestra del codice sostituire il codice seguente
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
Con:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim oWord As Word.Application Dim oDoc As Word.Document Dim oTable As Word.Table Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph Dim oRng As Word.Range Dim oShape As Word.InlineShape Dim oChart As Object Dim Pos As Double 'Start Word and open the document template. oWord = CreateObject("Word.Application") oWord.Visible = True oDoc = oWord.Documents.Add 'Insert a paragraph at the beginning of the document. oPara1 = oDoc.Content.Paragraphs.Add oPara1.Range.Text = "Heading 1" oPara1.Range.Font.Bold = True oPara1.Format.SpaceAfter = 24 '24 pt spacing after paragraph. oPara1.Range.InsertParagraphAfter() 'Insert a paragraph at the end of the document. '** \endofdoc is a predefined bookmark. oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range) oPara2.Range.Text = "Heading 2" oPara2.Format.SpaceAfter = 6 oPara2.Range.InsertParagraphAfter() 'Insert another paragraph. oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range) oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:" oPara3.Range.Font.Bold = False 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. Dim r As Integer, c As Integer oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 3, 5) oTable.Range.ParagraphFormat.SpaceAfter = 6 For r = 1 To 3 For c = 1 To 5 oTable.Cell(r, c).Range.Text = "r" & r & "c" & c Next Next oTable.Rows.Item(1).Range.Font.Bold = True oTable.Rows.Item(1).Range.Font.Italic = True 'Add some text after the table. 'oTable.Range.InsertParagraphAfter() oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range) 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. oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 5, 2) oTable.Range.ParagraphFormat.SpaceAfter = 6 For r = 1 To 5 For c = 1 To 2 oTable.Cell(r, c).Range.Text = "r" & r & "c" & c Next Next oTable.Columns.Item(1).Width = oWord.InchesToPoints(2) 'Change width of columns 1 & 2 oTable.Columns.Item(2).Width = oWord.InchesToPoints(3) 'Keep inserting text. When you get to 7 inches from top of the 'document, insert a hard page break. Pos = oWord.InchesToPoints(7) oDoc.Bookmarks.Item("\endofdoc").Range.InsertParagraphAfter() Do oRng = oDoc.Bookmarks.Item("\endofdoc").Range oRng.ParagraphFormat.SpaceAfter = 6 oRng.InsertAfter("A line of text") oRng.InsertParagraphAfter() Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage) oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd) oRng.InsertBreak(Word.WdBreakType.wdPageBreak) oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd) oRng.InsertAfter("We're now on page 2. Here's my chart:") oRng.InsertParagraphAfter() 'Insert a chart and change the chart. oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _ ClassType:="MSGraph.Chart.8", FileName _ :="", LinkToFile:=False, DisplayAsIcon:=False) oChart = oShape.OLEFormat.Object oChart.charttype = 4 'xlLine = 4 oChart.Application.Update() oChart.Application.Quit() 'If desired, you can proceed from here using the Microsoft Graph 'Object model on the oChart object to make additional changes to the 'chart. oShape.Width = oWord.InchesToPoints(6.25) oShape.Height = oWord.InchesToPoints(3.57) 'Add text after the chart. oRng = oDoc.Bookmarks.Item("\endofdoc").Range oRng.InsertParagraphAfter() oRng.InsertAfter("THE END.") 'All done. Close this form. Me.Close() End Sub
-
Aggiungere il codice seguente all'inizio di Form1.vb:
Imports Word = Microsoft.Office.Interop.Word
-
Premere F5 per creare ed eseguire il programma.
Al termine del codice, esaminare il documento creato automaticamente. Il documento contiene due pagine di paragrafi formattati, tabelle e un grafico.
Usare un modello
Se si usa l'automazione per creare documenti in un formato comune, è possibile avviare il processo con un nuovo documento basato su un modello preformattato. L'uso di un modello con il client di automazione di Word offre due vantaggi significativi rispetto alla creazione di un documento dal nulla:
-
È possibile avere un maggiore controllo sulla formattazione e il posizionamento degli oggetti in tutti i documenti.
-
È possibile creare i documenti con meno codice.
Usando un modello, è possibile ottimizzare la posizione di tabelle, paragrafi e altri oggetti all'interno del documento, oltre a includere la formattazione su tali oggetti. Con l'automazione, è possibile creare un nuovo documento basato sul modello con codice come il seguente:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
Nel modello è possibile definire segnalibri in modo che il client di automazione possa inserire testo variabile in una posizione specifica del documento, come indicato di seguito:
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
Un altro vantaggio dell'uso di un modello è la possibilità di creare e archiviare stili di formattazione da applicare in fase di esecuzione, come segue:
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
Oppure
oWord.Selection.Style = "MyStyle"
Riferimenti
Per altre informazioni sull'uso di Visual Basic .NET per automatizzare Microsoft Word, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
301656 Come automatizzare Word per eseguire una stampa unione da Visual Basic .NET