Appunti di Programmazione

Aprire un documento MS Office di Word in una Form

Recentemente mi è capitato di dovere aprire un documento di Microsoft Word da una form, pertanto mi sono impegnato a cercare informazioni su come eseguire questa cosa. Cercando in rete ho trovato alcune soluzioni già pronte ed ho pensato di appuntarle e di riunirle in questa pagina.

NON SI TRATTA DI LAVORI ESEGUITI DAL SOTTOSCRITTO.

Metodo 1: utilizzo del componente WebBrowser.

Avviate un nuovo progetto e nella form inserite i seguenti componenti: Button, OpenFileDialog e WebBrowser, quindi digitate il codice seguente.

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Button1.Text = "Browse"

        With OpenFileDialog1
	    .Filter = "Office Documents " & "(*.doc, *.xls)|*.doc;*.xls"
            .FilterIndex = 1
        End With

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim strFileName As String

        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

            strFileName = OpenFileDialog1.FileName
            WebBrowser1.Navigate(strFileName)

        End If

    End Sub

End Class

Questo metodo funziona se nel proprio PC è installato il pacchetto Office, o comunque, il programma necessario a visualizzare il file scelto. La cosa interessante è che all'interno del componente WebBrowser viene visualizzata l'applicazione adatta a editare il file caricato; cioè se l'utente vuole aprire un file di Word, nel componente WebBrowser viene aperto MS Word con il documento selezionato in bella mostra.
Modificando o escludendo la proprietà Filter si possono aprire molti altri tipi di files: PDF,JPEG...

Metodo 2: utilizzo delle librerie "Microsoft Office xx.0 Object Library".

È necessario avere installato nel proprio editor di Visual Basic 2008 la libreria sopra citata: Microsoft Office 11.0 Object Library" ed aggiungerla come riferimento al progetto.
Per chi non avesse questo componente installato può reperirlo a questo indirizzo:

Office 2003 Update: Redistributable Primary Interop Assemblies

Avviate un nuovo progetto, e come nel precedente, inserite un Button e la finestra di dialogo OpenFileDialog, quindi digitate il seguente codice:

Imports Microsoft.Office.Interop

Public Class Form1

    Dim documentoWor d As New Word.Application

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Button1.Text = "Apri documento"
        OpenFileDialog1.Filter = "(*.doc)|*.doc"

    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim nomeFile As String = Nothing

        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

            nomeFile = OpenFileDialog1.FileName
            documentoWord.Documents.Open(nomeFile)
            documentoWord.Visible = True

        End If

    End Sub

End Class

Con questo secondo metodo, l'apertura del file .doc avviene in MS Word stesso e non in un componente di Visual Basic 2008; l'editor di testi di casa Microsoft viene avviato da codice passandogli il nome del file da visualizzare e il tutto accade al di fuori della form della nostra applicazione Visual Basic.