Instruktaż: Wywołanie kodu w dodatku poziomie aplikacji z języka VBA
W tym instruktażu przedstawiono sposób wystawiać obiektu w poziomie aplikacji dodatek do innych rozwiązań Microsoft Office, w tym Visual Basic dla aplikacji (VBA) i dodatki COM.
Dotyczy: Informacje przedstawione w tym temacie dotyczą projektów na poziomie aplikacji dla pakietu Microsoft Office 2013 i Microsoft Office 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacji pakietu Office i typ projektu
Chociaż w tym instruktażu specjalnie używa programu Excel, pojęcia świadczy instruktażu są stosowane do dowolnego szablonu — w projekcie dostarczonym przez Visual Studio.
W tym instruktażu przedstawiono następujące zadania:
Definiowanie klasy, która może być narażony na inne rozwiązania pakietu Office.
Wystawiając klasy do innych rozwiązań pakietu Office.
Wywołanie metody klasy z kodu VBA.
[!UWAGA]
Na danym komputerze mogą być używane inne nazwy lub lokalizacje pewnych elementów interfejsu użytkownika programu Visual Studio, które są używane w poniższych instrukcjach. Używana wersja programu Visual Studio oraz jej ustawienia określają te elementy. Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.
Wymagania wstępne
Potrzebne do przeprowadzenia tego instruktażu następujące składniki:
-
Wersja Visual Studio 2012 zawierająca narzędzia dla deweloperów pakietu Microsoft Office. Aby uzyskać więcej informacji, zobacz [Konfigurowanie komputera do opracowywania rozwiązań pakietu Office](bb398242\(v=vs.110\).md).
- Excel 2013or Excel 2010.
Wideo wersję tego tematu, zobacz wideo jak: wywołanie kodu w poziomie aplikacji dodatek z VBA.
Tworzenie projektu w
Pierwszym krokiem jest utworzenie projektu w dla programu Excel.
Aby utworzyć nowy projekt
Tworzenie projektu w programie Excel o nazwie ExcelImportData, przy użyciu szablonu projektu-w programie Excel.Aby uzyskać więcej informacji, zobacz Jak: tworzenie projektów pakietu Office w programie Visual Studio.
Visual StudioOtwiera ThisAddIn.cs lub ThisAddIn.vb kod pliku i dodaje ExcelImportData projekt Solution Explorer.
Definiowanie klasy, które mogą narażać innych rozwiązań pakietu Office
Celem tego instruktażu jest do ImportData metody klasy o nazwie AddInUtilities w dodatku z kodu VBA.Ta metoda zapisuje ciąg w komórce A1 aktywnego arkusza.
Aby odsłonić AddInUtilities klasy do innych rozwiązań pakietu Office, należy klasa publicznych i niewidoczny dla modelu COM.Należy również udostępnić interfejsu IDispatch interface w klasie.Kod w poniższej procedurze pokazano jeden ze sposobów spełnić te wymagania.Aby uzyskać więcej informacji, zobacz Wywołanie kodu w dodatki poziomie aplikacji z innych rozwiązań pakietu Office.
Do zdefiniowania klasy, która może narazić na inne rozwiązania pakietu Office
Na Projekt menu, kliknij przycisk Dodać klasy.
W Dodaj nowy element okno dialogowe pole, Zmień nazwę nowej klasy do AddInUtilitiesi kliknij przycisk Dodaj.
AddInUtilities.cs lub AddInUtilities.vb plik zostanie otwarty w edytorze kodu.
Dodaj następujące instrukcje do początku pliku.
Imports System.Data Imports System.Runtime.InteropServices Imports Excel = Microsoft.Office.Interop.Excel
using System.Data; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel;
Zamień AddInUtilities klasy następujący kod.
<ComVisible(True)> _ Public Interface IAddInUtilities Sub ImportData() End Interface <ComVisible(True)> _ <ClassInterface(ClassInterfaceType.None)> _ Public Class AddInUtilities Implements IAddInUtilities ' This method tries to write a string to cell A1 in the active worksheet. Public Sub ImportData() Implements IAddInUtilities.ImportData Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet If activeWorksheet IsNot Nothing Then Dim range1 As Excel.Range = activeWorksheet.Range("A1") range1.Value2 = "This is my data" End If End Sub End Class
[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
Sprawia, że ten kod AddInUtilities klasy widocznych na modelu COM i dodaje ImportData metoda w klasie.Aby odsłonić interfejsu IDispatch interfejs, AddInUtilities klasy ma również ClassInterfaceAttribute atrybut który implementuje interfejs, który jest niewidoczny dla modelu COM.
Wystawiając klasy do innych rozwiązań pakietu Office
Aby odsłonić AddInUtilities klasy do innych rozwiązań pakietu Office, zastąpić RequestComAddInAutomationService metoda w ThisAddIn klasy.W poszczególnych, zwracają wystąpienie AddInUtilities klasy.
Aby odsłonić klasy AddInUtilities do innych rozwiązań pakietu Office
W Solution Explorer, rozwiń węzeł Excel.
Kliknij prawym przyciskiem myszy ThisAddIn.cs lub ThisAddIn.vb, a następnie kliknij przycisk Widok Kod.
Dodaj następujący kod do ThisAddIn klasy.
Private utilities As AddInUtilities Protected Overrides Function RequestComAddInAutomationService() As Object If utilities Is Nothing Then utilities = New AddInUtilities() End If Return utilities End Function
private AddInUtilities utilities; protected override object RequestComAddInAutomationService() { if (utilities == null) utilities = new AddInUtilities(); return utilities; }
Na budować menu, kliknij przycisk Budowania rozwiązania.
Zweryfikuj, że rozwiązanie opiera się bez błędów.
Badania-dodatek
Możesz zadzwonić do AddInUtilities klasy z kilku różnych typów rozwiązań pakietu Office.W tym instruktażu będą używać kodu VBA w skoroszycie programu Excel.Aby uzyskać więcej informacji na temat innych rodzajów rozwiązań pakietu Office można również użyć, zobacz Wywołanie kodu w dodatki poziomie aplikacji z innych rozwiązań pakietu Office.
Aby przetestować dodatek
Naciśnij klawisz F5, aby uruchomić projekt.
W programie Excel należy zapisać aktywny skoroszyt jako skoroszyt programu zostaną (*.xlsm).Zapisać go w dogodnej lokalizacji, takiej jak pulpit.
Kliknij na Wstążce, autora kartę.
[!UWAGA]
Jeśli autora karta nie jest widoczna, najpierw należy wyświetlić.Aby uzyskać więcej informacji, zobacz Jak: Pokaż kartę Deweloper na Wstążce.
W Kod grupy, kliknij przycisk programu Visual Basic.
Otwiera edytor Visual Basic.
W Projekt okno, kliknij dwukrotnie ThisWorkbook.
Plik kodu dla ThisWorkbook otwiera obiekt.
Dodaj następujący kod VBA w pliku kodu.Ten kod najpierw pobiera COMAddIn obiekt, który reprezentuje ExcelImportData dodatek.Następnie kod używa Object właściwość COMAddIn obiektu, aby zadzwonić do ImportData metoda.
Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Naciśnij klawisz F5.
Sprawdź, czy nowy Zaimportowanych danych został dodany arkusz w skoroszycie.Sprawdź także, że komórka A1 zawiera ciąg to Moje dane.
Zakończ pracę programu Excel.
Następne kroki
Można poznać więcej informacji na temat programowania dodatki z tych tematów:
Użycie ThisAddIn klasy do automatyzowania aplikacji hosta i wykonywać inne zadania w projektach dodatek.Aby uzyskać więcej informacji, zobacz Programowanie aplikacji poziom dodatki.
W dodatku, należy utworzyć niestandardowe okienko zadań.Aby uzyskać więcej informacji, zobacz Niestandardowe okienka zadań i Jak: Dodawanie niestandardowego okienka zadań do aplikacji.
Dostosowywanie Wstążki w dodatku.Aby uzyskać więcej informacji, zobacz Omówienie wstążki i Jak: rozpocząć dostosowywanie wstążki.
Zobacz też
Zadania
Jak: tworzenie projektów pakietu Office w programie Visual Studio
Koncepcje
Wywołanie kodu w dodatki poziomie aplikacji z innych rozwiązań pakietu Office
Architektura dodatków poziomie aplikacji
Dostosowywanie funkcji interfejsu użytkownika przy użyciu interfejsów rozszerzalności