Accedi con Microsoft
Accedi o crea un account.
Salve,
Seleziona un altro account.
Hai più account
Scegli l'account con cui vuoi accedere.

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:

  1. 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.

  2. Aggiungere un riferimento alla libreria di oggetti di Microsoft Word. A tal fine, attenersi alla seguente procedura:

    1. Scegliere Aggiungi riferimento dal menu Progetto.

    2. 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.
       

    3. 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ì.

  3. Nel menu Visualizza selezionare Casella degli strumenti per visualizzare la casella degli strumenti e quindi aggiungere un pulsante a Form1.

  4. Fare doppio clic su Button1. Viene visualizzata la finestra del codice per il modulo.

  5. 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
  6. Aggiungere il codice seguente all'inizio di Form1.vb:

    Imports Word = Microsoft.Office.Interop.Word
  7. 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

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?
Premendo Inviare, il tuo feedback verrà usato per migliorare i prodotti e i servizi Microsoft. L'amministratore IT potrà raccogliere questi dati. Informativa sulla privacy.

Grazie per il feedback!

×