Delen via


Walkthrough: Office Programming in Visual Basic

Visual Studio biedt functies in Visual Basic waarmee Microsoft Office-programmering wordt verbeterd. Functies in Visual Basic zijn onder andere automatisch geïmplementeerde eigenschappen, instructies in lambda-expressies en initialisatiefuncties voor verzamelingen. U kunt typegegevens insluiten, zodat assembly's kunnen worden geïmplementeerd die communiceren met COM-onderdelen zonder dat primaire assembly's (PIA's) op de computer van de gebruiker worden geïmplementeerd. Zie Walkthrough: Embedding Types from Managed Assemblyies (Overzicht: Typen insluiten van beheerde assembly's) voor meer informatie.

In dit scenario worden deze functies in de context van Office-programmering gedemonstreert, maar veel van deze functies zijn ook nuttig bij algemene programmering. In de procedure gebruikt u een Excel-invoegtoepassing om een Excel-werkmap te maken. Vervolgens maakt u een Word document dat een koppeling naar de werkmap bevat. Ten slotte ziet u hoe u de PIA-afhankelijkheid in- en uitschakelt.

Vereisten

U moet Microsoft Office Excel en Microsoft Office Word op uw computer hebben geïnstalleerd om deze procedure te voltooien.

Notitie

In de volgende instructies kunnen op uw computer verschillende namen of locaties worden weergegeven voor sommige elementen van de gebruikersinterface van Visual Studio. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie De IDE aanpassen voor meer informatie.

Een Excel-invoegtoepassingstoepassing instellen

  1. Start Visual Studio.

  2. Wijs in het menu Bestand de optie Nieuw aan en klik op Project.

  3. Vouw in het deelvenster Geïnstalleerde sjablonenVisual Basic uit, vouw Office uit en klik vervolgens op het versiejaar van het Office-product.

  4. Klik in het deelvenster Sjablonen op Excel-versie-invoegtoepassing<>.

  5. Kijk boven aan het deelvenster Sjablonen om te controleren of .NET Framework 4 of een latere versie wordt weergegeven in het vak Doelframework.

  6. Typ desgewenst een naam voor uw project in het vak Naam .

  7. Klik op OK.

  8. Het nieuwe project wordt weergegeven in Solution Explorer.

Verwijzingen toevoegen

  1. Klik in Solution Explorer met de rechtermuisknop op de naam van uw project en klik vervolgens op Verwijzing toevoegen. Het dialoogvenster Verwijzing toevoegen wordt weergegeven.

  2. Selecteer op het tabblad Assembly'sMicrosoft.Office.Interop.Excel, versie <version>.0.0.0 (zie Microsoft-versies voor een sleutel voor de office-productversienummers), in de lijst Onderdeelnaam, houd vervolgens de Ctrl-toets ingedrukt en selecteer Microsoft.Office.Interop.Word, version <version>.0.0.0. Als u de assembly's niet ziet, moet u er mogelijk voor zorgen dat ze zijn geïnstalleerd en weergegeven (zie Procedure: Primaire Office-interop-assembly's installeren).

  3. Klik op OK.

Benodigde importinstructies of instructies toevoegen

  1. Klik in Solution Explorer met de rechtermuisknop op het bestand ThisAddIn.vb of ThisAddIn.cs en klik vervolgens op Code weergeven.

  2. Voeg de volgende Imports instructies toe aan het begin van het codebestand als deze nog niet aanwezig zijn.

    Imports Microsoft.Office.Interop
    

Een lijst met bankrekeningen maken

  1. Klik in Solution Explorer met de rechtermuisknop op de naam van uw project, klik op Toevoegen en klik vervolgens op Klasse. Geef de klasse de naam Account.vb. Klik op Add.

  2. Vervang de definitie van de Account klasse door de volgende code. De klassedefinities maken gebruik van automatisch geïmplementeerde eigenschappen. Zie Automatisch geïmplementeerde eigenschappen voor meer informatie.

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. Als u een bankAccounts lijst met twee accounts wilt maken, voegt u de volgende code toe aan de ThisAddIn_Startup methode in ThisAddIn.vb. Voor de lijstdeclaraties worden verzamelings-initialisatiemiddelen gebruikt. Zie Initializers voor verzamelingen voor meer informatie.

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

Gegevens exporteren naar Excel

  1. Voeg in hetzelfde bestand de volgende methode toe aan de ThisAddIn klasse . Met de methode wordt een Excel-werkmap ingesteld en worden er gegevens naar geëxporteerd.

    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
    
    • Methode Toevoegen heeft een optionele parameter voor het opgeven van een bepaalde sjabloon. Met optionele parameters kunt u het argument voor die parameter weglaten als u de standaardwaarde van de parameter wilt gebruiken. Omdat er in het vorige voorbeeld geen argument is verzonden, Add wordt de standaardsjabloon gebruikt en wordt een nieuwe werkmap gemaakt.

    • De Range eigenschappen en Offset van het object Bereik gebruiken de functie geïndexeerde eigenschappen . Met geïndexeerde eigenschappen kunt u ook de Value eigenschap van het Range object gebruiken, waardoor u de Value2 eigenschap niet hoeft te gebruiken. De Value eigenschap wordt geïndexeerd, maar de index is optioneel. In het volgende voorbeeld werken optionele argumenten en geïndexeerde eigenschappen samen.

  2. Voeg de volgende code toe aan het einde van DisplayInExcel om de kolombreedten aan te passen aan de inhoud.

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

    Zie procedures 'De PIA-verwijzing zoeken' en 'De PIA-afhankelijkheid herstellen' verderop in dit artikel voor meer informatie over het insluiten van interoperabiliteitstypen.

DisplayInExcel aanroepen

  1. Voeg de volgende code toe aan het einde van de ThisAddIn_StartUp methode. De aanroep naar DisplayInExcel bevat twee argumenten. Het eerste argument is de naam van de lijst met accounts die moeten worden verwerkt. Het tweede argument is een lambda-expressie met meerdere regels die definieert hoe de gegevens moeten worden verwerkt. De ID waarden en balance voor elk account worden weergegeven in aangrenzende cellen en de rij wordt rood weergegeven als het saldo kleiner is dan nul.

    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. Druk op F5 om het programma uit te voeren. Er wordt een Excel-werkblad weergegeven met de gegevens van de accounts.

Een Word document toevoegen

  1. Voeg de volgende code toe aan het einde van de ThisAddIn_StartUp methode om een Word document te maken dat een koppeling naar de Excel-werkmap bevat.

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

    De methode PasteSpecial heeft zeven parameters, die allemaal zijn gedefinieerd als optionele referentieparameters. Met benoemde en optionele argumenten kunt u de parameters aanwijzen die u wilt openen op naam en argumenten verzenden naar alleen die parameters. In dit voorbeeld worden argumenten verzonden om aan te geven dat er een koppeling naar de werkmap op het Klembord moet worden gemaakt (parameter Link) en dat de koppeling als pictogram (parameterDisplayAsIcon) in het Word document moet worden weergegeven.

De toepassing uitvoeren

  1. Druk op F5 om de toepassing uit te voeren. Excel wordt gestart en er wordt een tabel weergegeven met de gegevens van de twee accounts in bankAccounts. Vervolgens wordt een Word document weergegeven met een koppeling naar de Excel-tabel.

Het voltooide project opschonen

  1. Klik in Visual Studio op Oplossing opschonen in het menu Bouwen . Anders wordt de invoegtoepassing telkens uitgevoerd wanneer u Excel op uw computer opent.

De PIA-referentie zoeken

  1. Voer de toepassing opnieuw uit, maar klik niet op Oplossing opschonen.

  2. Selecteer start. Zoek microsoft Visual Studio-versie <> en open een opdrachtprompt voor ontwikkelaars.

  3. Typ ildasm in het venster Opdrachtprompt voor ontwikkelaars voor Visual Studio en druk op Enter. Het IL DASM-venster wordt weergegeven.

  4. Selecteer in het menu Bestand in het IL DASM-venster de optie Bestand>openen. Dubbelklik op Visual Studio-versie <>en dubbelklik vervolgens op Projecten. Open de map voor uw project en zoek in de map bin/Foutopsporing naar uw projectnaam.dll. Dubbelklik op de naam van het project.dll. In een nieuw venster worden de kenmerken van uw project weergegeven, naast verwijzingen naar andere modules en assembly's. Houd er rekening mee dat naamruimten Microsoft.Office.Interop.Excel en Microsoft.Office.Interop.Word zijn opgenomen in de assembly. In Visual Studio importeert de compiler standaard de typen die u nodig hebt van een PIA waarnaar wordt verwezen in uw assembly.

    Zie Procedure: Assembly-inhoud weergeven voor meer informatie.

  5. Dubbelklik op het manifestpictogram . Er wordt een venster weergegeven met een lijst met assembly's die items bevatten waarnaar wordt verwezen door het project. Microsoft.Office.Interop.Excel en Microsoft.Office.Interop.Word niet zijn opgenomen in de lijst. Omdat de typen die uw project nodig heeft in uw assembly zijn geïmporteerd, zijn verwijzingen naar een PIA niet vereist. Dit maakt de implementatie eenvoudiger. De PIA's hoeven niet aanwezig te zijn op de computer van de gebruiker en omdat voor een toepassing geen specifieke versie van een PIA hoeft te worden geïmplementeerd, kunnen toepassingen worden ontworpen voor gebruik met meerdere versies van Office, mits de benodigde API's in alle versies aanwezig zijn.

    Omdat implementatie van PIA's niet meer nodig is, kunt u in geavanceerde scenario's een toepassing maken die werkt met meerdere versies van Office, inclusief eerdere versies. Dit werkt echter alleen als uw code geen API's gebruikt die niet beschikbaar zijn in de versie van Office waarmee u werkt. Het is niet altijd duidelijk of een bepaalde API beschikbaar was in een eerdere versie en daarom wordt het werken met eerdere versies van Office afgeraden.

    Notitie

    Office heeft geen PBA's gepubliceerd vóór Office 2003. Daarom is de enige manier om een interoperabiliteitsassembly voor Office 2002 of eerdere versies te genereren door de COM-verwijzing te importeren.

  6. Sluit het manifestvenster en het assemblyvenster.

De PIA-afhankelijkheid herstellen

  1. Klik in Solution Explorer op de knop Alle bestanden weergeven. Vouw de map Verwijzingen uit en selecteer Microsoft.Office.Interop.Excel. Druk op F4 om het venster Eigenschappen weer te geven.
  2. Wijzig in het venster Eigenschappen de eigenschap Interoperabiliteitstypen insluiten van True in False.
  3. Herhaal stap 1 en 2 in deze procedure voor Microsoft.Office.Interop.Word.
  4. Druk op F5 om te controleren of het project nog steeds correct wordt uitgevoerd.
  5. Herhaal stap 1-3 uit de vorige procedure om het assemblyvenster te openen. U ziet dat Microsoft.Office.Interop.Word en Microsoft.Office.Interop.Excel niet meer in de lijst met ingesloten assembly's staan.
  6. Dubbelklik op het manifestpictogram en blader door de lijst met assembly's waarnaar wordt verwezen. Zowel Microsoft.Office.Interop.Word als Microsoft.Office.Interop.Excel staan in de lijst. Omdat de toepassing verwijst naar de Excel- en Word PBA's en de eigenschap Interoperabiliteitstypen insluiten is ingesteld op Onwaar, moeten beide assembly's aanwezig zijn op de computer van de eindgebruiker.
  7. Klik in Visual Studio op Oplossing opschonen in het menu Bouwen om het voltooide project op te schonen.

Zie ook