#54: [VB 2008] Apertura documento Word o creazione da modello

Se avete la necessità di aprire da Visual Studio 2008 un documento Word esistente oppure se volete creare un nuovo documento basato su un modello di Word, è necessario seguire una procedura ben precisa.

Innanzi tutto, è necessario scaricare e installare il prodotto “2007 Microsoft Office System Update: Redistributable Primary Interop Assemblies” da questa pagina: http://www.microsoft.com/downloads/details.aspx?FamilyID=59daebaa-bed4-4282-a28c-b864d8bfa513&displaylang=en. Esistono versioni di questo pacchetto anche per Office 2003 e XP. Infatti, l’interoperabilità con Office non fa parte di Visual Studio 2008 e bisogna installare le librerie a parte.

Una volta che avete estratto i file di installazione e licenza e avete installato le librerie (avviando il file .msi), dovreste trovarle nella cartella C:\Windows\assembly. Le riconoscete facilmente, perché iniziano tutte per Microsoft.Office.Interop.*. Al posto dell’asterisco trovate Word, Excel e così via.

La versione 12.0.0.0 delle librerie si riferisce a Office 2007, mentre la versione 11.0.0.0 si riferisce alla versione 2003.

Create un modello di Word 2007 (va bene anche il formato .doc di Word 2003) di nome “MioModello.dot” e posizionatelo nella vostra cartella Documenti predefinita.

Ora create un nuovo progetto in Visual Basic 2008, un normale progetto Applicazione Windows Form.

Aprite le proprietà del progetto e aggiungete il riferimento alle librerie appena installate (Microsoft.Office.Interop.*).

Terminata questa fase “preparatoria”, aggiungete un pulsante al form e, nel codice del gestore dell’evento Click del pulsante stesso, inserite quanto segue:

      Dim oWord As Word.Application = CreateObject("Word.Application")
      Dim oDoc As Word.Document
      Dim strDocumentName As String = ""
      oWord.Visible = True

      strDocumentName = "C:\Users\Mario\Documents\MioDocumento.doc"

      If Dir(strDocumentName) = "" Then
         oWord.Documents.Add(My.Computer.FileSystem.SpecialDirectories.MyDocuments & _
            "\MioModello.dot").SaveAs(FileName:=strDocumentName)
      Else
         oDoc = oWord.Documents.Open(strDocumentName)
      End If

      oWord.Activate()

      oDoc = Nothing
      oWord = Nothing

Dopo aver avviato il programma, premete il pulsante: se il documento MioDocumento.doc esiste già, verrà aperto in una finestra di Word. Se non esiste (come al primo avvio), verrà aperto un nuovo documento, con il nome MioDocumento.doc, con i contenuti del modello MioModello.dot.

Naturalmente se premete nuovamente il pulsante, dopo aver modificato e salvato il documento Word, verrà aperto questo nuovo documento.

A questo punto diventa estremamente semplice passare delle variabili al metodo per aprire qualsiasi documento Word si voglia o per creare qualsiasi documento basato su un modello di Word. 

 

Pubblicato il 9 giugno 2009 su VB 2008. Aggiungi ai preferiti il collegamento . 6 commenti.

  1. Alessandro Saccente

    Ho letto il suo libro su Visual Basic e adesso sto provando a creare una mia applicazione che ha bisogno di interfacciarsi con un documento word, può indicarmi la via giusta da seguire con visual basic 2010? perchè ricevo un invalidcastexception quando il debug arriva su questa istruzione:

    oWord.Documents.Add…………..

    Mi piace

  2. mirko Melegari

    a seguito della conclusione finale:

    A questo punto diventa estremamente semplice passare delle variabili al metodo per aprire qualsiasi documento Word si voglia o per creare qualsiasi documento basato su un modello di Word.

    desidererei saper ove posso trovare le informazione oer passare variabili e generarmi un mio documento dal template.
    Grazie mille

    Mi piace

    • A quale post ti riferisci?

      Mi piace

      • mirko Melegari

        l’articolo era il seguente
        —————————————–
        #54: [VB 2008] Apertura documento Word o creazione da modello
        —————————————–
        leggere la frase finale ove si fa riferimento alla semplicita’ di passare variabili.

        Sara’ semplice passare variabili ma purtroppo io non so come fare

        Mi piace

    • Per Mirko…

      Ecco, per esempio, come puoi modificare il codice:

      Public Class Form1

      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim strDocumentName As String
      Dim strModelName As String
      strDocumentName = “C:\Users\Mario\Documents\MioDocumento.doc”
      strModelName = My.Computer.FileSystem.SpecialDirectories.MyDocuments & _
      “\MioModello.dot”
      ApriWord(strDocumentName, strModelName)
      End Sub

      Public Sub ApriWord(strDocumentName As String, strModelName As String)
      Dim oWord As Word.Application = CreateObject(“Word.Application”)
      Dim oDoc As Word.Document
      oWord.Visible = True

      If Dir(strDocumentName) = “” Then
      oWord.Documents.Add(strModelName).SaveAs(FileName:=strDocumentName)
      Else
      oDoc = oWord.Documents.Open(strDocumentName)
      End If

      oWord.Activate()

      oDoc = Nothing
      oWord = Nothing
      End Sub
      End Class

      Per semplicità ho creato un’applicazione Windows Forms, ho aggiunto un pulsante e ho scritto il codice del gestore dell’evento Click del pulsante. Infine ho trasformato il codice che era riportato nell’articolo in un metodo, aggiungendo due parametri alla firma del metodo (strDocumentName e strModelName) e modificando parte del codice del metodo, perché le due stringhe devono provenire “dall’esterno” e non essere codificate direttamente nel metodo stesso.
      Spero che sia abbastanza chiaro, altrimenti chiedi…

      Mi piace

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: