Al momento sei offline in attesa che la connessione Internet venga ristabilita

Automatizzare Word da Visual Basic .NET per creare un nuovo documento

Per la versione di questo articolo relativa a Microsoft Visual C# .NET, vedere 316384.
Per la versione di questo articolo relativa a Microsoft Visual Basic 6.0 vedere 313193.
Sommario
In questo articolo viene descritta la procedura dettagliata per creare un nuovo documento di Word utilizzando l'automazione di Visual Basic .NET.

Codice di esempio

Il codice di esempio riportato nell'articolo dimostra come effettuare le seguenti operazioni:
  • Inserire i paragrafi con testo e formattazione.
  • Individuare e modificare vari intervalli all'interno di un documento.
  • Inserire tabelle, formattare le tabelle e compilare le tabelle con i dati.
  • Aggiungere un grafico.
Per creare un nuovo documento di Word tramite l'automazione di Visual Basic .NET, attenersi alla seguente procedura:
  1. Avviare Microsoft Visual Studio .NET. Scegliere Nuovo dal menu File, quindi Progetto. In Tipi progetto scegliere Progetti di Visual Basic, quindi fare clic su Applicazione per Windows in Modelli. In base all'impostazione predefinita, viene creato il progetto Form1.
  2. Aggiungere un riferimento alla libreria oggetti di Microsoft Word. A questo scopo, attenersi alla seguente procedura:
    1. Scegliere Aggiungi riferimento dal menu Progetto.
    2. Nella scheda COM, individuare la libreria di oggetti di Microsoft Word e scegliere Seleziona.

      Nota In Microsoft Office 2003 e nelle versioni successive sono inclusi assembly di interoperabilità primari (PIA, Primary Interop Assembly). Non sono invece inclusi in Microsoft Office XP, ma possono essere scaricati. Per ulteriori informazioni sugli assembly di interoperabilità primari di Office XP, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
      328912 Assembly di interoperabilità primari (PIA) di Microsoft Office XP disponibili per il download
    3. Scegliere OK nella finestra di dialogo Aggiungi riferimento per accettare le selezioni. Se viene richiesto di generare wrapper per le librerie selezionate, scegliere .
  3. Scegliere Casella degli strumenti dal menu Visualizza per visualizzare la Casella degli strumenti, quindi aggiungere un pulsante a Form1.
  4. Fare doppio clic su Button1. Viene visualizzata la finestra del codice per il form.
  5. Nella finestra del codice sostituire il codice riportato di seguito:
        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 rappresenta è segnalibro predefinito.        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            Avanti        Avanti        oTable.Rows.Item(1).Range.Font.Bold = True        oTable.Rows.Item(1).Range.Font.Bold = 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            Avanti        Avanti        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
  6. Aggiungere il codice riportato di seguito nella parte superiore di Form1.vb:
    Imports Word = Microsoft.Office.Interop.Word
  7. Premere F5 per compilare ed eseguire il programma.
Al termine dell'esecuzione del codice, esaminare il documento che è stato creato automaticamente. Il documento contiene due pagine di paragrafi, tabelle e un grafico formattati.

Utilizzare un modello

Se si utilizza l'automazione per creare documenti che sono in formato comune, si consiglia di avviare il processo con un nuovo documento basato su un modello preformattato. L'utilizzo di un modello con il client di automazione di Word comporta due vantagi rilevanti durante la creazione di un nuovo documento:
  • È possibile controllare maggiormente la formattazione e la posizione degli oggetti all'interno dei documenti.
  • È possibile creare documenti con meno codice.
Utilizzando un modello, è possibile ottimizzare il posizionamento di tabelle, paragrafi e altri oggetti all'interno del documento, nonché formattare tali oggetti. Utilizzando l'automazione, è possibile creare un nuovo documento con codice,basato sui modelli dell'utente, come nell'esempio riportato di seguito:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
Nel modello, è possibile definire i segnalibri in modo che il client di automazione riesca a riempire testo variabile in un percorso specifico del documento, come nel seguente esempio:
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
Un altro vantaggio derivante dall'utilizzo di un modello consiste nel poter creare e memorizzare gli stili di formattazione che si desidera applicare durante l'esecuzione, come riportato di seguito:
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
Oppure
oWord.Selection.Style = "MyStyle"
Riferimenti
Per ulteriori informazioni sull'utilizzo di Visual Studio .NET per automatizzare Microsoft Word, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
301656 Automatizzare Word per eseguire una procedura di stampa unione da Visual Basic .NET
Per ulteriori informazioni, vedere i seguenti siti Web Microsoft Developer Network (MSDN):
word2002 word2k2 word10 wordxp wd2002 wd2k2 wd10 wdxp word2003 word2k3 word11 wd2003 wd2k3 wd11 word2007 word2k7 word12 wd2007 wd2k7 wd12
Proprietà

ID articolo: 316383 - Ultima revisione: 08/30/2013 14:03:00 - Revisione: 12.0

  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2010
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic 2005 Express Edition
  • Microsoft Visual Basic 2008 Express Edition
  • Microsoft Visual Basic 2010 Express
  • kbexpertiseinter kbautomation kbhowtomaster KB316383
Feedback
script>