Dela via


Genomgång: Office-programmering i Visual Basic

Visual Studio erbjuder funktioner i Visual Basic som förbättrar Microsoft Office-programmering. Funktionerna i Visual Basic omfattar automatiskt implementerade egenskaper, instruktioner i lambda-uttryck och insamlingsinitierare. Du kan bädda in typinformation som tillåter distribution av sammansättningar som interagerar med COM-komponenter utan att distribuera primära interop-sammansättningar (PIA) till användarens dator. Mer information finns i Genomgång: Bädda in typer från hanterade sammansättningar.

Den här genomgången visar dessa funktioner i samband med Office-programmering, men många av dessa funktioner är också användbara i allmän programmering. I genomgången använder du ett Excel-tilläggsprogram för att skapa en Excel-arbetsbok. Sedan skapar du ett Word dokument som innehåller en länk till arbetsboken. Slutligen ser du hur du aktiverar och inaktiverar PIA-beroendet.

Krav

Du måste ha Microsoft Office Excel och Microsoft Office Word installerade på datorn för att slutföra den här genomgången.

Anteckning

Datorn kan visa olika namn eller platser för några av visual studio-elementen i användargränssnittet i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.

Konfigurera ett Excel-tilläggsprogram

  1. Starta Visual Studio.

  2. Peka på NyttArkiv-menyn och klicka sedan på Projekt.

  3. I fönstret Installerade mallar expanderar du Visual Basic, expanderar Office och klickar sedan på versionsåret för Office-produkten.

  4. I fönstret Mallar klickar du på Tillägg för Excel-version<>.

  5. Titta överst i fönstret Mallar för att se till att .NET Framework 4 eller en senare version visas i rutan Målramverk.

  6. Ange ett namn för projektet i rutan Namn om du vill.

  7. Klicka på OK.

  8. Det nya projektet visas i Solution Explorer.

Lägg till referenser

  1. I Solution Explorer högerklickar du på projektets namn och klickar sedan på Lägg till referens. Dialogrutan Lägg till referens visas.

  2. På fliken Sammansättningar väljer du Microsoft.Office.Interop.Excel, version <version>.0.0.0 (en nyckel till versionsnumren för Office-produkten finns i Microsoft-versioner), i listan Komponentnamn och håller sedan ned CTRL-tangenten och väljer Microsoft.Office.Interop.Word, version <version>.0.0.0. Om du inte ser sammansättningarna kan du behöva se till att de är installerade och visas (se Så här: Installera office Primary Interop Assemblies).

  3. Klicka på OK.

Lägga till nödvändiga importinstruktioner eller använda direktiv

  1. I Solution Explorer högerklickar du på filen ThisAddIn.vb eller ThisAddIn.cs och klickar sedan på Visa kod.

  2. Lägg till följande Imports -instruktioner överst i kodfilen om de inte redan finns.

    Imports Microsoft.Office.Interop
    

Skapa en lista över bankkonton

  1. I Solution Explorer högerklickar du på projektets namn, klickar på Lägg till och sedan på Klass. Ge klassen namnet Account.vb. Klicka på Lägg till.

  2. Ersätt definitionen av Account klassen med följande kod. Klassdefinitionerna använder automatiskt implementerade egenskaper. Mer information finns i Automatiskt implementerade egenskaper.

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. Om du vill skapa en bankAccounts lista som innehåller två konton lägger du till ThisAddIn_Startup följande kod i metoden i ThisAddIn.vb. I listdeklarationerna används insamlingsinitierare. Mer information finns i Insamlingsinitierare.

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

Exportera data till Excel

  1. Lägg till följande metod i ThisAddIn klassen i samma fil. Metoden konfigurerar en Excel-arbetsbok och exporterar data till den.

    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
    
    • Metodtillägg har en valfri parameter för att ange en viss mall. Med valfria parametrar kan du utelämna argumentet för den parametern om du vill använda parameterns standardvärde. Eftersom inget argument skickas i föregående exempel Add använder standardmallen och skapar en ny arbetsbok.

    • Egenskaperna Range och Offsetför range-objektet använder funktionen för indexerade egenskaper . Med indexerade egenskaper kan du också använda Value -egenskapen för Range objektet, vilket eliminerar behovet av att använda Value2 egenskapen . Egenskapen Value är indexerad, men indexet är valfritt. Valfria argument och indexerade egenskaper fungerar tillsammans i följande exempel.

  2. Lägg till följande kod i slutet av DisplayInExcel för att justera kolumnbredderna så att de passar innehållet.

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

    Mer information om inbäddning av interop-typer finns i procedurerna "Hitta PIA-referensen" och "Återställa PIA-beroendet" senare i den här artikeln.

Anropa DisplayInExcel

  1. Lägg till följande kod i slutet av ThisAddIn_StartUp metoden. Anropet till DisplayInExcel innehåller två argument. Det första argumentet är namnet på listan över konton som ska bearbetas. Det andra argumentet är ett lambda-uttryck med flera ledningar som definierar hur data ska bearbetas. Värdena ID och balance för varje konto visas i intilliggande celler och raden visas i rött om saldot är mindre än noll.

    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. Kör programmet genom att trycka på F5. Ett Excel-kalkylblad visas som innehåller data från kontona.

Lägga till ett Word dokument

  1. Lägg till följande kod i slutet av ThisAddIn_StartUp metoden för att skapa ett Word dokument som innehåller en länk till Excel-arbetsboken.

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

    Metoden PasteSpecial har sju parametrar, som alla definieras som valfria referensparametrar. Med namngivna och valfria argument kan du ange de parametrar som du vill komma åt efter namn och skicka argument till endast dessa parametrar. I det här exemplet skickas argument för att ange att en länk till arbetsboken i Urklipp ska skapas (parametern Link) och att länken ska visas i Word dokument som en ikon (parametern DisplayAsIcon).

Kör programmet

  1. Tryck på F5 för att köra appen. Excel startar och visar en tabell som innehåller informationen från de två kontona i bankAccounts. Sedan visas ett Word dokument som innehåller en länk till Excel-tabellen.

Rensa det slutförda projektet

  1. I Visual Studio klickar du på Rensa lösning på menyn Skapa . Annars körs tillägget varje gång du öppnar Excel på datorn.

Hitta PIA-referensen

  1. Kör programmet igen, men klicka inte på Rensa lösning.

  2. Välj Start. Leta upp Microsoft Visual Studio-versionen <> och öppna en kommandotolk för utvecklare.

  3. Skriv ildasm i fönstret Developer Command Prompt for Visual Studio (Kommandotolk för utvecklare för Visual Studio) och tryck sedan på RETUR. FÖNSTRET IL DASM visas.

  4. menyn Arkiv i FÖNSTRET IL DASM väljer du Öppna fil>. Dubbelklicka på Visual Studio-version <>och dubbelklicka sedan på Projekt. Öppna mappen för projektet och leta efter projektnamnet.dll i mappen bin/Debug. Dubbelklicka på projektnamnet.dll. Ett nytt fönster visar projektets attribut, förutom referenser till andra moduler och sammansättningar. Observera att namnrymder Microsoft.Office.Interop.Excel och Microsoft.Office.Interop.Word ingår i sammansättningen. Som standard i Visual Studio importerar kompilatorn de typer du behöver från en refererad PIA till sammansättningen.

    Mer information finns i Gör så här : Visa sammansättningsinnehåll.

  5. Dubbelklicka på manifestikonen . Ett fönster visas som innehåller en lista över sammansättningar som innehåller objekt som refereras av projektet. Microsoft.Office.Interop.Excel och Microsoft.Office.Interop.Word ingår inte i listan. Eftersom de typer som projektet behöver har importerats till sammansättningen krävs inte referenser till en PIA. Detta gör distributionen enklare. PIA:erna behöver inte finnas på användarens dator och eftersom ett program inte kräver distribution av en specifik version av en PIA kan program utformas för att fungera med flera versioner av Office, förutsatt att de nödvändiga API:erna finns i alla versioner.

    Eftersom distribution av PIA inte längre behövs kan du skapa ett program i avancerade scenarier som fungerar med flera versioner av Office, inklusive tidigare versioner. Detta fungerar dock bara om koden inte använder några API:er som inte är tillgängliga i den version av Office som du arbetar med. Det är inte alltid klart om ett visst API var tillgängligt i en tidigare version och därför rekommenderas inte att arbeta med tidigare versioner av Office.

    Anteckning

    Office publicerade inte PIA före Office 2003. Därför är det enda sättet att generera en interop-sammansättning för Office 2002 eller tidigare versioner genom att importera COM-referensen.

  6. Stäng manifestfönstret och monteringsfönstret.

Återställa PIA-beroendet

  1. I Solution Explorer klickar du på knappen Visa alla filer. Expandera mappen Referenser och välj Microsoft.Office.Interop.Excel. Tryck på F4 för att visa fönstret Egenskaper .
  2. I fönstret Egenskaper ändrar du egenskapen Bädda in interoptyper från Sant till Falskt.
  3. Upprepa steg 1 och 2 i den här proceduren för Microsoft.Office.Interop.Word.
  4. Tryck på F5 för att kontrollera att projektet fortfarande körs korrekt.
  5. Upprepa steg 1–3 från föregående procedur för att öppna monteringsfönstret. Observera att Microsoft.Office.Interop.Word och Microsoft.Office.Interop.Excel inte längre finns i listan över inbäddade sammansättningar.
  6. Dubbelklicka på MANIFEST-ikonen och bläddra igenom listan över refererade sammansättningar. Både Microsoft.Office.Interop.Word och Microsoft.Office.Interop.Excel finns i listan. Eftersom programmet refererar till Excel och Word PIA och egenskapen Bädda in interoptyper är inställd på Falskt, måste båda sammansättningarna finnas på slutanvändarens dator.
  7. I Visual Studio klickar du på Rensa lösning på menyn Skapa för att rensa det slutförda projektet.

Se även