Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Starta Visual Studio.
Peka på Nytt på Arkiv-menyn och klicka sedan på Projekt.
I fönstret Installerade mallar expanderar du Visual Basic, expanderar Office och klickar sedan på versionsåret för Office-produkten.
I fönstret Mallar klickar du på Tillägg för Excel-version<>.
Titta överst i fönstret Mallar för att se till att .NET Framework 4 eller en senare version visas i rutan Målramverk.
Ange ett namn för projektet i rutan Namn om du vill.
Klicka på OK.
Det nya projektet visas i Solution Explorer.
Lägg till referenser
I Solution Explorer högerklickar du på projektets namn och klickar sedan på Lägg till referens. Dialogrutan Lägg till referens visas.
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).Klicka på OK.
Lägga till nödvändiga importinstruktioner eller använda direktiv
I Solution Explorer högerklickar du på filen ThisAddIn.vb eller ThisAddIn.cs och klickar sedan på Visa kod.
Lägg till följande
Imports
-instruktioner överst i kodfilen om de inte redan finns.Imports Microsoft.Office.Interop
Skapa en lista över bankkonton
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.
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
Om du vill skapa en
bankAccounts
lista som innehåller två konton lägger du tillThisAddIn_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
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
ochOffset
för range-objektet använder funktionen för indexerade egenskaper . Med indexerade egenskaper kan du också användaValue
-egenskapen förRange
objektet, vilket eliminerar behovet av att användaValue2
egenskapen . EgenskapenValue
är indexerad, men indexet är valfritt. Valfria argument och indexerade egenskaper fungerar tillsammans i följande exempel.
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
Lägg till följande kod i slutet av
ThisAddIn_StartUp
metoden. Anropet tillDisplayInExcel
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ärdenaID
ochbalance
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)
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
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 (parameternDisplayAsIcon
).
Kör programmet
- 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
- 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
Kör programmet igen, men klicka inte på Rensa lösning.
Välj Start. Leta upp Microsoft Visual Studio-versionen <> och öppna en kommandotolk för utvecklare.
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.På 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
ochMicrosoft.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.
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
ochMicrosoft.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.
Stäng manifestfönstret och monteringsfönstret.
Återställa PIA-beroendet
- 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 .
- I fönstret Egenskaper ändrar du egenskapen Bädda in interoptyper från Sant till Falskt.
- Upprepa steg 1 och 2 i den här proceduren för
Microsoft.Office.Interop.Word
. - Tryck på F5 för att kontrollera att projektet fortfarande körs korrekt.
- Upprepa steg 1–3 från föregående procedur för att öppna monteringsfönstret. Observera att
Microsoft.Office.Interop.Word
ochMicrosoft.Office.Interop.Excel
inte längre finns i listan över inbäddade sammansättningar. - Dubbelklicka på MANIFEST-ikonen och bläddra igenom listan över refererade sammansättningar. Både
Microsoft.Office.Interop.Word
ochMicrosoft.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. - I Visual Studio klickar du på Rensa lösning på menyn Skapa för att rensa det slutförda projektet.