Niezależnie od powodów które nami kierują musimy wiedzieć co nam będzie potrzebne do zrealizowania naszego małego projektu. Narzędzia które wymienię są darmowe i osiągalne bez problemu w internecie.
Do pisania samego kodu możemy użyć darmowego kompilatora Visual Basic 2008 Express Edition. Tu niestety będziemy mieli małą niedogodność, gdyż to co chcemy napisać nie jest osiągalne w szablonach tej wersji. To akurat nie jest aż tak duży problem gdyż szablon kodu klasy jest dostępny na stronie Microsoft wraz z opisem jak przygotować taki plik ale tu uwaga w pełnej wersji Visual Studio - http://support.microsoft.com/kb/817248/pl
Kolejnym narzędziem jakiego będziemy potrzebować jest generator identyfikatorów GUID. - http://www.guidgenerator.com/online-guid-generator.aspx - dzięki niemu nasza klasa będzie miała unikalne identyfikatory, które ręcznie sobie przekleimy do kodu.
Ostatnim elementem jaki będzie nam potrzebny to plik Regasm.exe - jest to narzędzie umożliwiające wygenerowanie pliku tlb niezbędnego w procesie linkowania w projekcie VBA. Nie jest ono obecne we frmeworku 3.5 i niestety musimy posiłkować się plikiem obecnym w wersji 2.0. Jeżeli jej nie posiadamy możemy sobie ją ściągnąć ze strony Microsoft np. z tego adresu.
Samo wygenerowanie pliku DLL z szablonu może odbyć się zarówno z poziomu Visual Basic 2008 Express jaki kompilatora VBC.EXE. bardziej złożone jest natomiast generowanie pliku tlb - gdyż potrzebne są do tego uprawnienia administratora. W systemie Windows Vista i Windows 7 tryb taki uzyskamy poprzez wykorzystanie opcji "Uruchom jako administrator", starsze systemy jak Winxows XP nie potrzebują takiego trybu uruchamiania, wystarczy posiadani praw lokalnego administratora.
Proces generowania pliku tlb jest niezwykle prosty i wymaga jedynie uruchomienia komendy:
regasm.exe biblioteka.dll /tlb:biblioteka.tlbgdzie biblioteka.dll to plik który otrzymamy po kompilacji kodu. Dla ułatwienia pracy napisałem bardzo prosty skrypt kompiluj.cmd:
@ECHO OFF PATH = C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;c:\Windows\System32 Vbc.exe /out:%~n1.dll /target:library %1 regasm.exe %~n1.dll /tlb:%~n1.tlbktórego wyżej wymieniony kod umieszczamy w pliku kompiluj.cmd, a następnie możemy wywołać za pomocą polecenia:
kompiluj.cmd Funkcje.vbgdzie Funkcje.vb to nazwa pliku z kodem źródłowym biblioteki którą chemy skompilować a natępnie zarejestrować oraz stworzyć plik tlb.
UWAGA: nazrędzie regasm.exe rejestruje odrazu bibliotekę w systemie
Kod pliku Funkcje.vb
Imports System.Net Imports System.IO Imports System.Text <ComClass(Funkcje.ClassId, Funkcje.InterfaceId, Funkcje.EventsId)> _ Public Class Funkcje #Region "COM GUIDs" ' These GUIDs provide the COM identity for this class ' and its COM interfaces. If you change them, existing ' clients will no longer be able to access the class. Public Const ClassId As String = "3d0185c0-5b91-4222-b09e-3076d0c3721f" Public Const InterfaceId As String = "c41cb37e-388d-4f27-aba2-1b8843bb207a" Public Const EventsId As String = "c2688582-7bc2-4376-a83a-bf4d0add3ce2" #End Region ' A creatable COM class must have a Public Sub New() ' with no parameters, otherwise, the class will not be ' registered in the COM registry and cannot be created ' via CreateObject. Public Sub New() MyBase.New() End Sub Public Function test() As Boolean Return True End Function End Class
Kolejnym krokiem jest dodanie referencji tak stworzonej biblioteki do projektu VBA. Możemy skorzystać z utworzonego pliku tlb lub wybrać z listy referencji dostępnych w systemie. Przykładowy kod VBA dozamieszczonego przykładu wyglądał by w następujący sposób:
Sub test_com_in_net() Dim r As New Funkcje.Funkcje On Error GoTo ERR_Handler Set r = New Funkcje.Funkcje Debug.Print r.test Exit Sub ERR_Handler: Debug.Print err.Number, err.Description End Sub
Brak komentarzy:
Prześlij komentarz