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.
Den här genomgången visar hur du anropar en metod i en anpassning på dokumentnivå för Microsoft Office Word från VBA-kod (Visual Basic for Applications) i dokumentet. Proceduren omfattar tre grundläggande steg: lägga till en metod i ThisDocument klassen värdobjekt, exponera metoden för VBA-kod och anropa sedan metoden från VBA-koden i dokumentet.
Gäller för: Informationen i det här avsnittet gäller för projekt på dokumentnivå för Excel och Word. Mer information finns i Funktioner som är tillgängliga efter Office-program och projekttyp.
Även om den här genomgången använder Word specifikt gäller de begrepp som visas i genomgången även för projekt på dokumentnivå för Excel.
I den här genomgången tas följande aktiviteter upp:
Skapa ett dokument som innehåller VBA-kod.
Använd Trust Center i Word för att verifiera dokumentets plats.
Lägga till en metod i värdobjektklassen
ThisDocument.Exponera metoden till VBA-kod.
Anropa metoden från VBA-kod.
Anmärkning
Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen 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 Visual Studio IDE.
Förutsättningar
Du behöver följande komponenter för att slutföra den här genomgången:
En utgåva av Visual Studio som innehåller Utvecklarverktyg för Microsoft Office. Mer information finns i Konfigurera en dator för att utveckla Office-lösningar.
Microsoft Word
Skapa ett dokument som innehåller VBA-kod
Det första steget är att skapa ett makroaktiverat dokument som innehåller ett enkelt VBA-makro. Dokumentet måste innehålla ett VBA-projekt innan du skapar ett Visual Studio-projekt som baseras på dokumentet. Annars kan Visual Studio inte ändra VBA-projektet för att aktivera VBA-kod för att anropa anpassningssammansättningen.
Om du redan har ett dokument som innehåller VBA-kod som du vill använda kan du hoppa över det här steget.
Skapa ett dokument som innehåller VBA-kod
Starta Word.
Spara det aktiva dokumentet som ett Word Macro-Enabled-dokument (*.docm) med namnet DocumentWithVBA. Spara den på en lämplig plats, till exempel skrivbordet.
Klicka på fliken Utvecklare i menyfliksområdet.
Anmärkning
Om fliken Utvecklare inte visas måste du först visa den. Mer information finns i Så här: Visa fliken Utvecklare i menyfliksområdet.
I gruppen Kod klickar du på Visual Basic.
Visual Basic-redigeraren öppnas.
Dubbelklicka på ThisDocument i projektfönstret.
Kodfilen för
ThisDocumentobjektet öppnas.Lägg till följande VBA-kod i kodfilen. Den här koden definierar en enkel funktion som inte gör någonting. Det enda syftet med den här funktionen är att säkerställa att ett VBA-projekt finns i dokumentet. Detta krävs för senare steg i den här genomgången.
Sub EmptySub() End SubSpara dokumentet och avsluta Word.
Skapa projektet
Nu kan du skapa ett projekt på dokumentnivå för Word som använder det makroaktiverade dokument som du skapade tidigare.
Skapa ett nytt projekt
Starta Visual Studio.
Peka på Nytt på Arkiv-menyn och klicka sedan på Projekt. Om din IDE är inställd på att använda Visual Basic-utvecklingsinställningar klickar du på Nytt projekt på Arkiv-menyn.
I fönstret Mallar expanderar du Visual Basic och expanderar sedan Office/SharePoint.
Välj noden Office-tillägg .
I listan över projektmallar väljer du word 2010-dokument - eller Word 2013-dokumentprojektet .
I rutan Namn skriver du CallingCodeFromVBA.
Klicka på OK.
Visual Studio Tools for Office-projektguiden öppnas.
Välj Kopiera ett befintligt dokument och i rutan Fullständig sökväg för det befintliga dokumentet anger du platsen för dokumentet DocumentWithVBA som du skapade tidigare. Om du använder ett eget makroaktiverat dokument anger du platsen för det här dokumentet i stället.
Klicka på Finish.
Visual Studio öppnar dokumentet DocumentWithVBA i designern och lägger till CallingCodeFromVBA-projektet i Solution Explorer.
Lita på dokumentets plats
Innan du kan exponera kod i din lösning för VBA-kod i dokumentet, måste du ha förtroende för att VBA i dokumentet kan köras. Det finns flera sätt att göra detta på. För den här genomgången kan du lita på dokumentets plats i Säkerhetscenter i Word.
Att lita på dokumentets plats
Starta Word.
Klicka på fliken Arkiv .
Klicka på knappen Word-alternativ .
I fönstret Kategorier klickar du på Säkerhetscenter.
I informationsfönstret klickar du på Inställningar för säkerhetscenter.
I kategorifönstret klickar du på Betrodda platser.
I informationsfönstret klickar du på Lägg till ny plats.
I dialogrutan Betrodd plats för Microsoft Office bläddrar du till mappen som innehåller CallingCodeFromVBA-projektet .
Välj Undermappar på den här platsen är också betrodda.
I dialogrutan Betrodd plats för Microsoft Office klickar du på OK.
I dialogrutan Säkerhetscenter klickar du på OK.
I dialogrutan Word-alternativ klickar du på OK.
Avsluta Word.
Lägga till en metod i klassen ThisDocument
Nu när VBA-projektet har konfigurerats lägger du till en metod i den ThisDocument värdobjektklass som du kan anropa från VBA-kod.
Så här lägger du till en metod i klassen ThisDocument
Högerklicka på ThisDocument.vb i Solution Explorer och klicka sedan på Visa kod.
Filen ThisDocument.vb öppnas i kodredigeraren.
Lägg till följande metod i
ThisDocumentklassen. Den här metoden skapar en tabell med två rader och två kolumner i början av dokumentet. Parametrarna anger den text som visas på den första raden. Senare i den här genomgången anropar du den här metoden från VBA-koden i dokumentet.Public Sub CreateTable(ByVal firstColumnHeader As String, _ ByVal secondColumnHeader As String) Me.Paragraphs(1).Range.InsertParagraphBefore() Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2) With table1 .Style = "Table Professional" .Cell(1, 1).Range.Text = firstColumnHeader .Cell(1, 2).Range.Text = secondColumnHeader End With End SubSkapa projektet.
Exponera metoden för VBA-kod
Om du vill exponera CreateTable metoden för VBA-kod i dokumentet anger du egenskapen EnableVbaCallers för ThisDocument värdobjektet till Sant.
Så här exponerar du metoden för VBA-kod
Dubbelklicka på ThisDocument.vb i Solution Explorer.
Filen DocumentWithVBA öppnas i designern.
I fönstret Egenskaper väljer du egenskapen EnableVbaCallers och ändrar värdet till Sant.
Klicka på OK i meddelandet som visas.
Skapa projektet.
Anropa metoden från VBA-kod
Nu kan du anropa CreateTable metoden från VBA-koden i dokumentet.
Anmärkning
I den här genomgången lägger du till VBA-kod i dokumentet när du felsöker projektet. VBA-koden som du lägger till i det här dokumentet skrivs över nästa gång du skapar projektet, eftersom Visual Studio ersätter dokumentet i utdatamappen för bygget med en kopia av dokumentet från huvudprojektmappen. Om du vill spara VBA-koden kan du kopiera den till dokumentet i projektmappen. Mer information finns i Kombinera VBA- och dokumentnivåanpassningar.
Anropa metoden från VBA-kod
Tryck på F5 för att köra projektet.
Klicka på Visual Basic i gruppen Kod på fliken Utvecklare.
Visual Basic-redigeraren öppnas.
På menyn Infoga klickar du på Modul.
Lägg till följande kod i den nya modulen.
Den här koden anropar
CreateTablemetoden i anpassningssammansättningen. Makrot kommer åt den här metoden genomCallVSTOAssemblyegenskapen hosThisDocumentobjektet. Den här egenskapen genererades automatiskt när du angav egenskapen EnableVbaCallers tidigare i den här genomgången.Sub CreateTable() Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date") End SubTryck på F5.
Kontrollera att en ny tabell har lagts till i dokumentet.
Avsluta Word utan att spara ändringarna.
Nästa steg
Du kan lära dig mer om att anropa kod i Office-lösningar från VBA i följande avsnitt:
Anropa kod i en Visual C#-anpassning från VBA. Den här processen skiljer sig från Visual Basic-processen. Mer information finns i Genomgång: Anropa kod från VBA i ett Visual C#-projekt.
Anropa kod i ett VSTO-tillägg från VBA. Mer information finns i Handledning: Anropa kod i ett VSTO-tillägg från VBA.