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

Utilizzo del controllo WebBrowser per aprire un documento di Office in Visual Basic .NET

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I304643
Per la versione di questo articolo relativa a Microsoft Visual C# .NET, vedere 304662.
Sommario
Potrebbe essere necessario visualizzare o incorporare un documento di Office direttamente in un form di Visual Basic .NET. A differenza delle versioni precedenti di Visual Basic, Visual Basic .NET non include un controllo OLE che consenta di incorporare un documento di Office in un form. Se si desidera incorporare un documento esistente e aprirlo sul posto come un oggetto documento ActiveX in un form di Visual Basic .NET, una possibile soluzione consiste nell'utilizzare il controllo Microsoft WebBrowser.

In questo articolo viene illustrato come cercare un documento di Office esistente e visualizzarlo in un form di Visual Basic .NET utilizzando il controllo WebBrowser.
Informazioni
I documenti ActiveX sono oggetti OLE incorporabili con un comportamento più simile ai controlli ActiveX che non ai tradizionali oggetti OLE. A differenza degli oggetti incorporati, un documento ActiveX non è stato progettato come oggetto contenibile in un documento più grande. È invece considerato un documento completo a sé stante, che viene semplicemente visualizzato, ad esempio con Microsoft Internet Explorer, o incluso in un'unica risorsa insieme ad altri documenti, come ad esempio un file del Raccoglitore di Microsoft Office. Un documento ActiveX contenuto nel controllo WebBrowser è sempre attivo, quindi, a differenza dei tradizionali oggetti OLE incorporati, l'attivazione sul posto è inutile.

Anche se in Microsoft Visual Basic .NET non è attualmente supportato l'hosting diretto di documenti ActiveX, è possibile utilizzare il controllo WebBrowser a questo scopo. Il controllo WebBrowser (Shdocvw.dll) fa parte di Internet Explorer e può essere utilizzato solo nei sistemi in cui è installato Internet Explorer.

Creazione di un'applicazione di Visual Basic .NET per l'apertura di documenti di Office

Per creare un'applicazione di Visual Basic .NET che apra documenti di Office, attenersi alla seguente procedura:
  1. Creare un nuovo progetto Applicazione Windows in Visual Basic .NET. Per impostazione predefinita, viene creato il progetto Form1.
  2. Scegliere Personalizza Casella degli strumenti dal menu Strumenti per visualizzare la finestra di dialogo Personalizza Casella degli strumenti. Nella scheda Componenti COM aggiungere un riferimento a Microsoft Web Browser. Scegliere OK per aggiungere il controllo WebBrowser alla Casella degli strumenti Windows Form. Il controllo WebBrowser verrà visualizzato con il testo Explorer nella Casella degli strumenti.
  3. Tramite la Casella degli strumenti aggiungere un controllo WebBrowser, un controllo OpenFileDialog e un pulsante a Form1. Verranno aggiunte le variabili membro AxWebBrowser1, OpenFileDialog1 e Button1 alla classe Form1.
  4. Definire un membro privato nella classe Form1 come segue:
    Dim oDocument as Object
  5. Incollare il seguente codice nella classe Form1:
    Private Sub Button1_Click(ByVal sender As System.Object, _   ByVal e As System.EventArgs) Handles Button1.Click    Dim strFileName As String    'Find the Office document.    With OpenFileDialog1        .FileName = ""        .ShowDialog()        strFileName = .FileName    End With    'If the user does not cancel, open the document.    If strFileName.Length Then        oDocument = Nothing        AxWebBrowser1.Navigate(strFileName)    End IfEnd SubPrivate 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, *.ppt)|*.doc;*.xls;*.ppt"        .FilterIndex = 1    End WithEnd SubPrivate Sub Form1_Closing(ByVal sender As Object, ByVal e As _   System.ComponentModel.CancelEventArgs) Handles MyBase.Closing    oDocument = NothingEnd SubPrivate Sub AxWebBrowser1_NavigateComplete2(ByVal sender As Object, _   ByVal e As AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event) _   Handles AxWebBrowser1.NavigateComplete2    On Error Resume Next    oDocument = e.pDisp.Document    'Note: You can use the reference to the document object to    '      automate the document server.    MsgBox("File opened by: " & oDocument.Application.Name)End Sub					
  6. Premere F5 per eseguire il progetto. Scegliendo Sfoglia viene visualizzata la finestra di dialogo Apri tramite la quale è possibile passare a un file di Word, Excel o PowerPoint. Selezionare un file, quindi scegliere Apri. Il documento viene aperto nel controllo WebBrowser e in una finestra di messaggio viene visualizzato il nome del server con il documento di Office.

Considerazioni sull'utilizzo del controllo WebBrowser

Quando si utilizza il controllo WebBrowser tenere presente quanto segue:
  • Il controllo WebBrowser ricerca i documenti in modo asincrono. Quando si chiama WebBrowser1.Navigate, viene restituito il controllo all'applicazione di Visual Basic prima che il documento sia stato caricato completamente. Se si prevede di automatizzare il documento contenuto, è necessario utilizzare l'evento NavigateComplete2 per essere informati quando il documento è stato caricato completamente. Utilizzare la proprietà Document dell'oggetto WebBrowser passata per ottenere un riferimento all'oggetto documento di Office, che nel codice precedente è impostata su oDocument.
  • Il controllo WebBrowser non supporta l'unione di menu.
  • Prima di visualizzare un documento di Office, il controllo WebBrowser di solito nasconde le eventuali barre degli strumenti ancorate. È possibile utilizzare l'automazione per visualizzare una barra degli strumenti mobile utilizzando un codice simile al seguente:
    With oDocument.Application.CommandBars("Standard")   .Position = 4 '[msoBarFloating]   .Visible = TrueEnd With					
    Le versioni più recenti di Internet Explorer (5.0 e successive) consentono inoltre di visualizzare le barre degli strumenti ancorate utilizzando il seguente codice:
    ' This is a toggle option, so call it once to show the ' toolbars and once to hide them. This works with Internet Explorer 5' but often fails to work properly with earlier versions...AxWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER)					
  • Esistono numerosi problemi noti che si verificano se si utilizzano più controlli WebBrowser in un progetto e se ogni controllo viene caricato con lo stesso tipo di documento di Office, ovvero documenti di Word o fogli di calcolo di Excel. Si consiglia di utilizzare un solo controllo per progetto e cercare un documento alla volta.

    Il problema più comune riguarda le barre dei comandi di Office che appaiono disattivate. Se nello stesso form sono presenti due controlli WebBrowser entrambi caricati con documenti di Word e le barre degli strumenti sono visualizzate utilizzando una delle tecniche precedenti, sarà attivo e funzionerà correttamente solo un set di barre degli strumenti. L'altro sarà disattivato e non potrà essere utilizzato.
  • Per cancellare il contenuto corrente di WebBrowser, nell'evento Click di un altro pulsante di comando oppure in un altro punto appropriato del codice, passare alla pagina vuota predefinita utilizzando il seguente codice:
       AxWebBrowser1.Navigate("about:blank")					
Riferimenti
Per ulteriori informazioni sull'utilizzo del controllo WebBrowser, fare clic sui numeri degli articoli della Knowledge Base riportati di seguito:
304562 INFO: Visual Studio .NET non fornisce un controllo contenitore OLE per Win Forms
243058 Utilizzo del controllo WebBrowser per aprire un documento di Office
162719 Utilizzo del controllo WebBrowser da Visual Basic 5.0
202476 BUG: Impossibile modificare un documento di Word nel controllo OLE o WebBrowser
188271 Stampa del contenuto del controllo WebBrowser da VB
191692 PRB: Shdocvw.dll non è incluso nel pacchetto di installazione di PDW
238313 PRB: Accesso al modello a oggetti dei documenti di Internet Explorer da Visual Basic
web browser kbExcel kbPowerPt kbWord XL2003 WD2003 PPT2003
Proprietà

ID articolo: 304643 - Ultima revisione: 01/23/2007 19:26:25 - Revisione: 6.3

  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • kbactivedocs kbautomation kbhowto kbwebbrowser KB304643
Feedback