Condividi tramite


Procedura dettagliata: Programmazione di Office in Visual Basic

Visual Studio offre funzionalità in Visual Basic che migliorano la programmazione di Microsoft Office. Le funzionalità di Visual Basic includono le proprietà implementate automaticamente, le istruzioni nelle espressioni lambda e gli inizializzatori di insieme. È possibile incorporare informazioni sul tipo, che consente la distribuzione di assembly che interagiscono con i componenti COM senza distribuire assembly di interoperabilità primari (PIA) nel computer dell'utente. Per altre informazioni, vedere Procedura dettagliata: Incorporamento dei tipi da assembly gestiti.

In questa procedura dettagliata queste funzionalità vengono illustrate nel contesto della programmazione di Office, ma molte di esse sono utili anche nella programmazione generale. Nella procedura dettagliata si usa un componente aggiuntivo di Excel per creare una cartella di lavoro di Excel. A questo punto si crea un documento di Word contenente un collegamento alla cartella di lavoro. Infine, si visualizzerà come la dipendenza dell'assembly di interoperabilità primario può essere abilitata e disabilitata.

Prerequisiti

Per completare questa procedura dettagliata è necessario aver installato Microsoft Office Excel o Microsoft Office Word nel computer.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.

Configurare un'applicazione del componente aggiuntivo di Excel

  1. Avviare Visual Studio.

  2. Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.

  3. Nel riquadro Modelli installati espandere Visual Basic, espandere Office e quindi fare clic sull'anno di versione del prodotto Office.

  4. Nel riquadro Modelli fare clic su Componente aggiuntivo versione> di Excel<.

  5. Verificare che nella parte superiore del riquadro Modelli sia visualizzato .NET Framework 4, o una versione successiva, nella casella Framework di destinazione.

  6. Se opportuno, digitare un nome per il progetto nella casella Nome.

  7. Fare clic su OK.

  8. Il nuovo progetto verrà visualizzato in Esplora soluzioni.

Aggiungere riferimenti

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e quindi scegliere Aggiungi riferimento. Verrà visualizzata la finestra di dialogo Aggiungi riferimento.

  2. Nella scheda Assembly selezionare Microsoft.Office.Interop.Excel, versione <version>.0.0.0 (per conoscere il numero versione del prodotto Office, vedere Versioni Microsoft) nell'elenco Nome componente. Tenere premuto CTRL e selezionare Microsoft.Office.Interop.Word, version <version>.0.0.0. Se non vengono visualizzati gli assembly, potrebbe essere necessario assicurarsi che siano installati e visualizzati (vedere Procedura: Installare assembly di interoperabilità primaria di Office).

  3. Fare clic su OK.

Aggiungere istruzioni Di importazione necessarie o istruzioni tramite direttive

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file ThisAddIn.vb o ThisAddIn.cs e quindi scegliere Visualizza codice.

  2. Aggiungere le istruzioni seguenti Imports all'inizio del file di codice se non sono già presenti.

    Imports Microsoft.Office.Interop
    

Creare un elenco di conti bancari

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto, fare clic su Aggiungie quindi su Classe. Assegnare un nome alla classe Account.vb. Scegliere Aggiungi.

  2. Sostituire la definizione della classe Account con il codice seguente. Le definizioni delle classi usano le proprietà implementate automaticamente. Per altre informazioni, vedere Proprietà implementate automaticamente.

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. Per creare un bankAccounts elenco contenente due account, aggiungere il codice seguente al ThisAddIn_Startup metodo in ThisAddIn.vb. Le dichiarazioni dell'elenco usano gli inizializzatori di insieme. Per altre informazioni, vedere Inizializzatori di insieme.

    Dim bankAccounts As New List(Of Account) From {
        New Account With {
                              .ID = 345,
                              .Balance = 541.27
                         },
        New Account With {
                              .ID = 123,
                              .Balance = -127.44
                         }
        }
    

Esportare i dati in Excel

  1. Nello stesso file, aggiungere il metodo seguente alla classe ThisAddIn. Il metodo configura una cartella di lavoro di Excel e vi esporta i dati.

    Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account),
                   ByVal DisplayAction As Action(Of Account, Excel.Range))
    
        With Me.Application
            ' Add a new Excel workbook.
            .Workbooks.Add()
            .Visible = True
            .Range("A1").Value = "ID"
            .Range("B1").Value = "Balance"
            .Range("A2").Select()
    
            For Each ac In accounts
                DisplayAction(ac, .ActiveCell)
                .ActiveCell.Offset(1, 0).Select()
            Next
    
            ' Copy the results to the Clipboard.
            .Range("A1:B3").Copy()
        End With
    End Sub
    
    • Il metodo Add ha un parametro facoltativo per specificare un modello specifico. I parametri facoltativi consentono di omettere l'argomento per tale parametro se si vuole usare il valore predefinito del parametro. Poiché nessun argomento viene inviato nell'esempio precedente, Add usa il modello predefinito e crea una nuova cartella di lavoro.

    • Le proprietà Range e Offset dell'oggetto Range usano la funzionalità delle proprietà indicizzate. Le proprietà indicizzate consentono anche di usare la proprietà Value dell'oggetto Range, eliminando la necessità di usare la proprietà Value2. La proprietà Value è indicizzata, ma l'indice è facoltativo. Nell'esempio seguente sono presenti sia argomenti facoltativi sia proprietà indicizzate.

  2. Aggiungere il seguente codice alla fine di DisplayInExcel per regolare la larghezza delle colonne in modo da adattarle al contenuto.

    ' Add the following two lines at the end of the With statement.
    .Columns(1).AutoFit()
    .Columns(2).AutoFit()
    

    Per altre informazioni sull'incorporamento dei tipi di interoperabilità, vedere procedure "Per trovare il riferimento all'pia" e "Per ripristinare la dipendenza pia" più avanti in questo articolo.

Richiamare DisplayInExcel

  1. Aggiungere il codice seguente alla fine del metodo ThisAddIn_StartUp. La chiamata a DisplayInExcel contiene due argomenti. Il primo argomento è il nome dell'elenco di conti da elaborare. Il secondo argomento è un'espressione lambda su più righe che definisce la modalità con cui i dati saranno elaborati. I valori ID e balance per ogni conto vengono visualizzati in celle adiacenti e la riga viene visualizzata in rosso se il saldo è inferiore a zero.

    DisplayInExcel(bankAccounts,
           Sub(account, cell)
               ' This multiline lambda expression sets custom
               ' processing rules for the bankAccounts.
               cell.Value = account.ID
               cell.Offset(0, 1).Value = account.Balance
    
               If account.Balance < 0 Then
                   cell.Interior.Color = RGB(255, 0, 0)
                   cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0)
               End If
           End Sub)
    
  2. Premere F5 per eseguire il programma. Viene visualizzato un foglio di lavoro di Excel che contiene i dati dei conti.

Aggiungere un documento Word

  1. Aggiungere il seguente codice alla fine del metodo ThisAddIn_StartUp per creare un documento di Word contenente un collegamento alla cartella di lavoro di Excel.

    Dim wordApp As New Word.Application
    wordApp.Visible = True
    wordApp.Documents.Add()
    wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
    

    Il metodo PasteSpecial include sette parametri, tutti definiti come parametri di riferimento facoltativi. Gli argomenti denominati e facoltativi consentono di indicare i parametri a cui si vuol accedere per nome e di inviare argomenti solo a tali parametri. In questo esempio gli argomenti vengono inviati per indicare che deve essere creato un collegamento alla cartella di lavoro negli Appunti (parametro Link), e che il collegamento deve essere visualizzato nel documento di Word come icona (parametro DisplayAsIcon).

Eseguire l'applicazione

  1. Premere F5 per eseguire l'applicazione. Excel viene avviato e viene visualizzata una tabella che contiene le informazioni dei due conti in bankAccounts. Quindi verrà visualizzato un documento di Word contenente un collegamento alla tabella di Excel.

Pulire il progetto completato

  1. In Visual Studio fare clic su Pulisci soluzione nel menu Compila. In caso contrario, il componente aggiuntivo verrà eseguito ogni volta che si apre Excel nel computer.

Trovare il riferimento a PIA

  1. Eseguire nuovamente l'applicazione, ma non fare clic su Pulisci soluzione.

  2. Selezionare Start. Individuare la versione> di Microsoft Visual Studio < e aprire un prompt dei comandi per sviluppatori.

  3. Digitare ildasm nella finestra del Prompt dei comandi per gli sviluppatori di Visual Studio e premere INVIO. Verrà visualizzata la finestra IL DASM.

  4. Nel menu File della finestra IL DASM selezionare File>Apri. Fare doppio clic su Versione> di Visual Studio <e quindi fare doppio clic su Progetti. Aprire la cartella per il progetto e cercare nella cartella bin/Debug il file nome progetto.dll. Fare doppio clic su nome progetto.dll. Una nuova finestra consente di visualizzare gli attributi del progetto, oltre ai riferimenti ad altri moduli e assembly. Notare che gli spazi dei nomi Microsoft.Office.Interop.Excel e Microsoft.Office.Interop.Word sono inclusi nell'assembly. Per impostazione predefinita in Visual Studio, il compilatore importa i tipi necessari da un assembly di interoperabilità primario a cui si fa riferimento nell'assembly.

    Per altre informazioni, vedere Procedura: Visualizzare il contenuto dell'assembly.

  5. Fare doppio clic sull'icona MANIFESTO. Viene visualizzata una finestra che include un elenco di assembly che contengono gli elementi a cui fa riferimento il progetto. Microsoft.Office.Interop.Excel e Microsoft.Office.Interop.Word non sono inclusi nell'elenco. Poiché i tipi che è necessario importare nell'assembly per il progetto, i riferimenti a un assembly di interoperabilità primario non sono necessari. Ciò rende più semplice la distribuzione. Gli assembly di interoperabilità primari non devono essere presenti nel computer dell'utente e, poiché un'applicazione non richiede la distribuzione di una versione specifica di un assembly di interoperabilità primario, è possibile progettare applicazioni compatibili con più versioni di Office, a condizione che le API necessarie siano presenti in tutte le versioni.

    Poiché la distribuzione di assembly di interoperabilità primari non è più necessaria, è possibile creare un'applicazione in scenari avanzati che sia compatibile con più versioni di Office, incluse le versioni precedenti. Tuttavia, questo metodo funziona solo se il codice non usa alcuna API che non sia disponibile nella versione di Office che si sta usando. Non è sempre chiaro se una particolare API fosse disponibile in una versione precedente e per tale motivo l'utilizzo di versioni precedenti di Office non è consigliato.

    Nota

    Non sono stati pubblicati PIA prima di Office 2003. Di conseguenza, l'unico modo per generare un assembly di interoperabilità per Office 2002 o versioni precedenti consiste nell'importare il riferimento COM.

  6. Chiudere la finestra del manifesto e l'assembly.

Ripristinare la dipendenza dell'assembly di interoperabilità primario

  1. In Esplora soluzioni fare clic sul pulsante Mostra tutti i file. Espandere la cartella Riferimenti e scegliere Microsoft.Office.Interop.Excel. Premere F4 per visualizzare la finestra Proprietà.
  2. Nella finestra Proprietà impostare la proprietà Incorpora tipi di interoperabilità da True a False.
  3. Ripetere i passaggi 1 e 2 di questa procedura per Microsoft.Office.Interop.Word.
  4. Premere F5 per verificare che il progetto sia ancora eseguito correttamente.
  5. Ripetere i passaggi da 1 a 3 della procedura precedente per aprire la finestra dell'assembly. Notare che Microsoft.Office.Interop.Word e Microsoft.Office.Interop.Excel non sono più presenti nell'elenco di assembly incorporati.
  6. Fare doppio clic sull'icona MANIFESTO e scorrere l'elenco degli assembly di riferimento. Sia Microsoft.Office.Interop.Word sia Microsoft.Office.Interop.Excel sono inclusi nell'elenco. Poiché l'applicazione fa riferimento agli assembly di interoperabilità primari di Excel e Word e la proprietà Incorpora tipi di interoperabilità è impostata su False, entrambi gli assembly devono esistere nel computer dell'utente finale.
  7. In Visual Studio fare clic su Pulisci soluzione nel menu Compila per pulire il progetto completato.

Vedi anche