Dela via


Genomgång: Anropa kod från VBA i ett Visual Basic-projekt

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:

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

  1. Starta Word.

  2. Spara det aktiva dokumentet som ett Word Macro-Enabled-dokument (*.docm) med namnet DocumentWithVBA. Spara den på en lämplig plats, till exempel skrivbordet.

  3. 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.

  4. I gruppen Kod klickar du på Visual Basic.

    Visual Basic-redigeraren öppnas.

  5. Dubbelklicka på ThisDocument i projektfönstret.

    Kodfilen för ThisDocument objektet öppnas.

  6. 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 Sub
    
  7. Spara 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

  1. Starta Visual Studio.

  2. Peka på NyttArkiv-menyn och klicka sedan på Projekt. Om din IDE är inställd på att använda Visual Basic-utvecklingsinställningar klickar du på Nytt projektArkiv-menyn.

  3. I fönstret Mallar expanderar du Visual Basic och expanderar sedan Office/SharePoint.

  4. Välj noden Office-tillägg .

  5. I listan över projektmallar väljer du word 2010-dokument - eller Word 2013-dokumentprojektet .

  6. I rutan Namn skriver du CallingCodeFromVBA.

  7. Klicka på OK.

    Visual Studio Tools for Office-projektguiden öppnas.

  8. 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.

  9. 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

  1. Starta Word.

  2. Klicka på fliken Arkiv .

  3. Klicka på knappen Word-alternativ .

  4. I fönstret Kategorier klickar du på Säkerhetscenter.

  5. I informationsfönstret klickar du på Inställningar för säkerhetscenter.

  6. I kategorifönstret klickar du på Betrodda platser.

  7. I informationsfönstret klickar du på Lägg till ny plats.

  8. I dialogrutan Betrodd plats för Microsoft Office bläddrar du till mappen som innehåller CallingCodeFromVBA-projektet .

  9. Välj Undermappar på den här platsen är också betrodda.

  10. I dialogrutan Betrodd plats för Microsoft Office klickar du på OK.

  11. I dialogrutan Säkerhetscenter klickar du på OK.

  12. I dialogrutan Word-alternativ klickar du på OK.

  13. 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

  1. Högerklicka på ThisDocument.vb i Solution Explorer och klicka sedan på Visa kod.

    Filen ThisDocument.vb öppnas i kodredigeraren.

  2. Lägg till följande metod i ThisDocument klassen. 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 Sub
    
  3. Skapa 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

  1. Dubbelklicka på ThisDocument.vb i Solution Explorer.

    Filen DocumentWithVBA öppnas i designern.

  2. I fönstret Egenskaper väljer du egenskapen EnableVbaCallers och ändrar värdet till Sant.

  3. Klicka på OK i meddelandet som visas.

  4. 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

  1. Tryck på F5 för att köra projektet.

  2. Klicka på Visual Basic i gruppen Kod på fliken Utvecklare.

    Visual Basic-redigeraren öppnas.

  3. menyn Infoga klickar du på Modul.

  4. Lägg till följande kod i den nya modulen.

    Den här koden anropar CreateTable metoden i anpassningssammansättningen. Makrot kommer åt den här metoden genom CallVSTOAssembly egenskapen hos ThisDocument objektet. 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 Sub
    
  5. Tryck på F5.

  6. Kontrollera att en ny tabell har lagts till i dokumentet.

  7. 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: