{"id":55000584,"date":"2008-04-01T00:00:00","date_gmt":"2021-02-11T21:20:20","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=584"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"COMAddIns_mit_Visual_Basic_2008_Express_Edition","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/","title":{"rendered":"COM-Add-Ins mit Visual Basic 2008 Express Edition"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>F&uuml;r die Erstellung von COM-Add-Ins brauchte man bislang teure Werkzeuge &#8211; so schien es zumindest. Mit ein wenig Bastelei k&ouml;nnen Sie diese jedoch auch mit der kostenlosen Express Edition von Visual Basic 2008 selber bauen. Dies er&ouml;ffnet eine Menge M&ouml;glichkeiten &#8211; aber lesen Sie doch einfach selbst.<\/b><\/p>\n<p>COM-Add-Ins sind praktische Helferlein, die immer zu Diensten sind, wenn auch Access ge&ouml;ffnet ist. Im Beitrag <b>Permanenter Query-Analyzer <\/b>(s. Shortlink 544) haben wir ein solches Tool auf Basis von Visual Basic 6.0 vorgestellt, das jedoch ausschlie&szlig;lich mit Access 2007 zusammenarbeitet. Im vorliegenden Beitrag lernen Sie die Grundlagen kennen, um solche Add-Ins unter .NET und ohne das kostenpflichtige Visual Studio 6.0, daf&uuml;r aber mit dem kostenlosen Visual Basic 2008 Express Edition zu programmieren. Mit Visual Basic 2008 k&ouml;nnen Sie COM-Add-Ins f&uuml;r Office 2003 und Office 2007 programmieren.<\/p>\n<p>Voraussetzung f&uuml;r den Einsatz von COM-Add-Ins, die mit Visual Basic 2008 erstellt wurden, ist das .NET-Framework. Dieses ist jedoch genau wie Visual Basic 2008 Express Edition kostenlos, in der aktuellen Version genau genommen sogar zusammen mit diesem erh&auml;ltlich. <\/p>\n<p>Das ist der gravierende Nachteil gegen&uuml;ber VB6-COM-Add-Ins, die ja meist einfach in Form einer DLL daherkommen und lediglich registriert werden m&uuml;ssen, damit man sie einsetzen kann.<\/p>\n<p>Mit der Zeit wird man allerdings auch davon ausgehen k&ouml;nnen, dass beinahe jeder Windows-Rechner dieses Framework enth&auml;lt. Au&szlig;erdem sind COM-Add-Ins im Gegensatz zu den mit Access entwickelten Anwendungen ja auch eher Entwicklerwerkzeuge, die nicht f&uuml;r ein gro&szlig;es Zielpublikum vorgesehen sind, sondern nur f&uuml;r Entwickler, und deren Arbeitsrechner ist ja meist ohnehin mit halbwegs moderner Software ausgestattet.<\/p>\n<p>Ein COM-Add-In besteht aus einer oder mehreren Funktionen, die vom Benutzer &uuml;ber die Men&uuml;leiste beziehungsweise Symbolleiste oder bei Access 2007 &uuml;ber das Ribbon aufgerufen werden k&ouml;nnen und entweder reinen in dem Add-In enthaltenen Code ausf&uuml;hrt oder aber auch eine eigene Benutzeroberfl&auml;che zur Verf&uuml;gung stellen, wie es beim QueryAnalyzer der Fall ist.<\/p>\n<p><b>Im Hintergrund<\/b><\/p>\n<p>COM-Add-Ins implementieren eine spezielle Schnittstelle namens <b>IExtensibility<\/b>. Diese liefert einige Ereignisprozeduren, die etwa beim Starten oder Schlie&szlig;en von Access ausgel&ouml;st werden. Damit Access beispielsweise beim Starten merkt, dass es da ein COM-Add-In gibt, dessen Ereignisse es feuern soll, tr&auml;gt man das COM-Add-In in geeigneter Form in die Registry ein.<\/p>\n<p>Access liest beim Start nach, ob dort COM-Add-Ins eingetragen sind, merkt sich diese und ruft deren Ereignisse auf. Da diese die Schnittstelle <b>IDTExtensibility<\/b> implementieren, das hei&szlig;t, die dort definierten Methoden enthalten muss, ben&ouml;tigen Sie auch diese Schnittstelle in Form der Datei <b>extensibility.dll<\/b>.<\/p>\n<p>Nun kommt diese Schnittstelle entweder mit einer der Vollversionen von Visual Studio 2008, f&uuml;r die man tief ins Portemonnaie greifen muss, oder mit einer &auml;lteren Version von Visual Studio. Und das war auch eines der gr&ouml;&szlig;ten Probleme beim Erstellen der Beispielanwendungen f&uuml;r diesen Beitrag: Es schien keine M&ouml;glichkeit zu geben, die <b>extensibility.dll <\/b>bereitzustellen, da diese offiziell nicht f&uuml;r Visual Basic 2008-Projekte verf&uuml;gbar ist.<\/p>\n<p>In der Annahme, dass die <b>extensibility.dll <\/b>auch nur mit Wasser kocht und keine weiteren Funktionen au&szlig;er der Definition der Schnittstelle besitzt, erfolgten einige erfolglose Versuche, die <b>extensibility.dll <\/b>selbst herzustellen. Nach einigen Experimenten war es schlie&szlig;lich geschafft: Die in Visual Basic 2008 Express Edition fehlende <b>IDTExtensibility2<\/b>-Schnittstelle lie&szlig; sich mit eben jenem Produkt nachbauen.<\/p>\n<p>Bevor wir zum Bau des eigentlichen COM-Add-Ins kommen finden Sie nachfolgend die Kurzanleitung zum Eigenbau der <b>extensibility.dll<\/b>.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">IDTExtensibility2 selbst bauen<\/p>\n<p>Die folgenden Ausf&uuml;hrungen gehen von einem System mit Office 2003 und Visual Studio 2008 Express Edition aus. Wer eine Version h&ouml;her als die Standard Edition besitzt, d&uuml;rfte die <b>extensibility.dll <\/b>bereits auf dem System haben und kann diese gegebenenfalls auch weitergeben &#8211; in diesem Bereich konnten f&uuml;r diesen Beitrag mangels Professional-Version keine Nachforschungen angestellt werden. Mehr Informationen zu <b>Visual Basic 2008 Express Edition <\/b>und zur Installation der Software erhalten Sie im Beitrag <b>Visual Basic 2008 Express Edition <\/b>(Shortlink 580).<\/p>\n<p>Nach dem &Atilde;-ffnen von Visual Studio legen Sie ein neues Projekt des Typs <b>Klassenbibliothek <\/b>mit dem Namen <b>Extensibility <\/b>an, &auml;ndern auch den Namen der einzigen vorhandenen Klasse von <b>Class1.vb <\/b>in <b>Extensibility.vb <\/b>und f&uuml;gen den Code aus Listing 1 in die Klasse ein (den bestehenden Inhalt l&ouml;schen Sie zuvor).<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Code der Schnittstellendatei Extensibility.vb<\/p>\n<pre>Imports System.Runtime.InteropServices<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;>Public Enum ext_ConnectMode<\/p>\n<pre> ext_cm_AfterStartup = 0<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> ext_cm_Startup = 1<\/p>\n<pre> ext_cm_External = 2<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> ext_cm_CommandLine = 3<\/p>\n<pre> ext_cm_Solution = 4<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> ext_cm_UISetup = 5<\/p>\n<pre>End Enum<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;>Public Enum ext_DisconnectMode<\/p>\n<pre> ext_dm_HostShutdown = 0<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> ext_dm_UserClosed = 1<\/p>\n<pre> ext_dm_UISetupComplete = 2<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> ext_dm_SolutionClosed = 3D<\/p>\n<pre>End Enum<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;>&lt;ComImport(), _<\/p>\n<pre> Guid(&quot;B65AD801-ABAF-11D0-BB8B-00A0C90F2744&quot;), _<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> TypeLibType(TypeLibTypeFlags.FAggregatable Or TypeLibTypeFlags.FHidden), _<\/p>\n<pre> InterfaceType(ComInterfaceType.InterfaceIsIDispatch)&gt; _<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;>Public Interface IDTExtensibility2<\/p>\n<pre> &lt;DispId(1)&gt; Sub OnConnection( _<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> &lt;[In](), MarshalAs(UnmanagedType.IDispatch)&gt; ByVal Application As Object, _<\/p>\n<pre> &lt;[In]()&gt; ByVal ConnectMode As ext_ConnectMode, _<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> &lt;[In](), MarshalAs(UnmanagedType.IDispatch)&gt; ByVal AddInInst As Object, _<\/p>\n<pre> &lt;[In](), MarshalAs(UnmanagedType.SafeArray, SafeArraySubType:=VarEnum.VT_VARIANT)&gt; ByRef custom As _<\/pre>\n<p>pre>System.Array)<br \/>\n &lt;DispId(2)&gt; Sub OnDisconnection( _p class=&#8220;quellcode-funktionssammlung&#8220;> &lt;[In]()&gt; ByVal RemoveMode As ext_DisconnectMode, _<\/p>\n<pre> &lt;[In](), MarshalAs(UnmanagedType.SafeArray, safearraysubtype:=VarEnum.VT_VARIANT)&gt; ByRef custom As _<\/pre>\n<p>pre>System.Array)<br \/>\n &lt;DispId(3)&gt; Sub OnAddInsUpdate( _p class=&#8220;quellcode-funktionssammlung&#8220;> &lt;[In](), MarshalAs(UnmanagedType.SafeArray, safearraysubtype:=VarEnum.VT_VARIANT)&gt; ByRef custom As _<\/p>\n<pre>System.Array)\r\n &lt;DispId(4)&gt; Sub OnStartupComplete( _<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> &lt;[In](), MarshalAs(UnmanagedType.SafeArray, safearraysubtype:=VarEnum.VT_VARIANT)&gt; ByRef custom As _<\/p>\n<pre>System.Array)\r\n &lt;DispId(5)&gt; Sub OnBeginShutdown( _<\/pre>\n<p>p class=&#8220;quellcode-funktionssammlung&#8220;> &lt;[In](), MarshalAs(UnmanagedType.SafeArray, safearraysubtype:=VarEnum.VT_VARIANT)&gt; ByRef custom As _<\/p>\n<pre>System.Array)\r\nEnd Interface<\/pre>\n<p>p>Wenn Sie die Einf&uuml;gemarke im Codefenster auf der Zeile <b>Public Interface IDTExtensibility2 <\/b>positionieren, sollte das Eigenschaftsfenster den Wert <b>True <\/b>f&uuml;r die Eigenschaft <b>COM-sichtbar <\/b>anzeigen &#8211; sonst holen Sie dies nach.<\/p>\n<p>Damit nicht nur das Interface, sondern die gesamte Assembly COM-sichtbar ist, &ouml;ffnen Sie mit einem Klick auf <b>My Project <\/b>im Projektmappen-Explorer die Eigenschaften, zeigen dort die Registerseite <b>Anwendung <\/b>an und klicken auf die Schaltfl&auml;che <b>Assemblyinformationen&#8230; <\/b>Dort aktivieren Sie die Option <b>Assembly COM-sichtbar machen<\/b> (siehe Bild 1).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic004_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Signieren der Assembly<\/span><\/b><\/p>\n<p>Nun signieren Sie die Assembly noch: Dazu wechseln Sie erneut zu den Projekteigenschaften, zeigen dort die Registerseite <b>Signierung <\/b>an, aktivieren die Option <b>Assembly registrieren&#8230; <\/b>und w&auml;hlen aus dem Kombinationsfeld <b>Schl&uuml;sseldatei mit starkem Namen ausw&auml;hlen <\/b>den Eintrag <b>&lt;Neu&#8230;&gt; <\/b>aus (siehe Bild 2). Folgen Sie den &uuml;brigen Anweisungen und schlie&szlig;en Sie den Vorgang ab.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic003_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: So machen Sie die Assembly COM-sichtbar<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p>Erstellen Sie dann das Projekt mit <b>Erstellen|Extensibility erstellen<\/b>,<b> <\/b>schlie&szlig;en Sie das Projekt mit dem Men&uuml;eintrag <b>Datei|Projekt schlie&szlig;en <\/b>und geben Sie dort das Verzeichnis an, in dem Sie das Projekt speichern wollen &#8211; beispielsweise das dort &uuml;blicherweise vorgeschlagene <b>C:\\Dokumente und Einstellungen\\Andr&eacute;\\Eigene Dateien\\Visual Studio 2008\\Projects<\/b>.<\/p>\n<p>Nun m&uuml;ssen Sie die DLL noch registrieren, wozu Sie das Tool <b>regasm.exe <\/b>mit dem folgenden Aufruf verwenden (<b>&lt;Pfad zur DLL&gt; <\/b>entsprechend ersetzen):<\/p>\n<pre>C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\RegAsm.exe &lt;Pfad zur DLL&gt;\\Extensibility.dll&quot; \/tlb \/codebase<\/pre>\n<p>Dies erzeugt eine zus&auml;tzliche Datei namens <b>Extensibility.tlb<\/b> (die Endung <b>tlb <\/b>steht f&uuml;r Type Library), die Informationen &uuml;ber die angebotenen Member der DLL enth&auml;lt.<\/p>\n<p>Fertig &#8211; die Arbeiten an der <b>Extensibility.dll <\/b>sind beendet.<\/p>\n<p><b>COM-Add-In Basisrezept<\/b><\/p>\n<p>Dann kann es losgehen &#8211; die Schritte, die zu einer herk&ouml;mmlichen COM-DLL f&uuml;hren, finden Sie hier in Kurzform:<\/p>\n<p>Legen Sie mit der Vorlage <b>Klassenbibliothek<\/b> ein neues Projekt namens <b>aiuCOMAddIn <\/b>an und benennen Sie die automatisch erzeugte Klasse in <b>aiuCOMAddIn.vb <\/b>um. Die Klasse enth&auml;lt nun diese beiden Zeilen:<\/p>\n<pre>Public Class aiuCOMAddIn\r\nEnd Class<\/pre>\n<p>Stellen Sie dem Public-Schl&uuml;sselwort den Ausdruck <b>&lt;ComClass()&gt; <\/b>voran. Visual Studio zeigt den Klassennamen <b>aiuCOMAddIn <\/b>nun unterschl&auml;ngelt an. Wenn Sie mit <b>Ansicht|Fehlerliste <\/b>die Fehlerliste einblenden, sehen Sie den Grund: Es fehlt ein &ouml;ffentlicher Member, damit von au&szlig;en via COM auf die Klasse zugegriffen werden kann.<\/p>\n<p>Das bedeutet nichts weiter, als dass eine Methode fehlt, die etwa Access aufrufen kann, wenn es startet und dies dem Add-In mitteilen m&ouml;chte (dazu fehlt freilich noch ein passender Eintrag in der Registry, aber dazu sp&auml;ter mehr).<\/p>\n<p>Dieser Member ist eine der f&uuml;nf Prozeduren, die es auf Basis der Schnittstelle <b>IDTExtensibility2 <\/b>zu implementieren gilt. Und dazu muss man der Klasse erst einmal bekanntgeben, dass sie dies &uuml;berhaupt tun soll. Dazu brauchen Sie zun&auml;chst einen Verweis auf die soeben erstellte Schnittstellenklasse <b>Extensibility.dll<\/b>.<\/p>\n<p>Um diesen hinzuzuf&uuml;gen, &ouml;ffnen Sie aus dem Projektmappen-Explorer den Eintrag <b>My Project <\/b>und wechseln dort zur Registerseite <b>Verweise<\/b>. Mit einem Klick auf <b>Hinzuf&uuml;gen <\/b>&ouml;ffnen Sie den Dialog <b>Verweis hinzuf&uuml;gen<\/b>. Dort wechseln Sie auf <b>Durchsuchen <\/b>und w&auml;hlen die zuvor frisch erzeugte <b>Extensibility.DLL <\/b>aus. Wechseln Sie dann zur Datei <b>aiuCOMAddIn.vb <\/b>und geben Sie dort in die noch leere Klasse die folgende Zeile ein:<\/p>\n<pre>Implements Extensibility.IDTExtensibility2<\/pre>\n<p>Visual Studio wird nun automatisch die Ereignisprozeduren der Schnittstelle hinzuf&uuml;gen (siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic002_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Die Schnittstelle Extensibility.IDTExtensibility2 mit ihren Ereignisprozeduren<\/span><\/b><\/p>\n<p>Die Methode <b>OnConnection <\/b>wird beim &Atilde;-ffnen der Client-Anwendung, die auf das COM-Add-In zugreifen soll, ausgel&ouml;st. Erg&auml;nzen Sie diese durch eine einfache <b>MsgBox<\/b>-Anweisung:<\/p>\n<pre>Public Sub OnConnection(...) _\r\nImplements Extensibility._\r\nIDTExtensibility2.OnConnection\r\nMsgBox(&quot;aiu&quot;)\r\nEnd Sub<\/pre>\n<p>Schlie&szlig;en und speichern Sie das Projekt nun im gew&uuml;nschten Verzeichnis, &ouml;ffnen Sie es erneut und erstellen Sie es mit <b>Projekt|aiuCOMAddIn erstellen<\/b>. Nun fehlen noch zwei kleine Schritte. Als Erstes registrieren Sie das COM-Add-In in der Eingabeaufforderung mit dieser Anweisung: <\/p>\n<pre>C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\RegAsm.exe &lt;Pfad zur DLL&gt;\\aiuCOMAddIn.dll&quot; \/tlb \/codebase<\/pre>\n<p>Anschlie&szlig;end erzeugen Sie noch einen Registry-Eintrag, den Access beim &Atilde;-ffnen ausliest und auf eventuell einzubindende COM-Add-Ins untersucht.<\/p>\n<p>Den Registry-Eintrag f&uuml;gen Sie ein, indem Sie die Zeilen aus Listing 2 in eine Datei namens <b>aiuCOMAddIn.reg <\/b>eintragen und diese ausf&uuml;hren. Der letzte Teil in den eckigen Klammern besteht aus dem Projektnamen sowie der Klasse, welche die <b>IDTExtensibility2<\/b>-Schnittstelle implementiert.<\/p>\n<p class=\"kastentabelleheader\">Listing 2: Das Ausf&uuml;hren einer Datei namens QueryAnalyzer.reg mit diesem Inhalt registriert das COM-Add-In.<\/p>\n<pre>Windows Registry Editor Version 5.00\r\n[HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\Access\\Addins\\aiuCOMAddIn.aiuCOMAddIn]\r\n&quot;LoadBehavior&quot;=dword:00000003\r\n&quot;FriendlyName&quot;=&quot;aiuCOMAddIn&quot;\r\n&quot;Description&quot;=&quot;aiuCOMAddIn ist ein Beispiel f&uuml;r das Erstellen von COM-Add-Ins mit Visual Basic 2008 Express Edition.&quot;<\/pre>\n<p><b>LoadBehavior <\/b>gibt durch den Wert <b>3 <\/b>an, dass das COM-Add-In sofort beim Start von Access geladen werden soll, der Rest dient der schicken Anzeige in der Add-In-Liste von Access.<\/p>\n<p>Die Registrierung erledigen Sie durch einen Doppelklick auf den Dateinamen <b>aiuCOMAddIn.reg <\/b>und anschlie&szlig;endes Best&auml;tigen der dadurch angezeigten Meldungen. Das Resultat sieht wie in Bild 4 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic005_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Dieser Registry-Eintrag sorgt daf&uuml;r, dass Access das Add-In aiuCOMAddIn beim Start l&auml;dt.<\/span><\/b><\/p>\n<p>Nun steht einem ersten Aufruf durch das &Atilde;-ffnen von Access nichts mehr im Wege.<\/p>\n<p><b>Im Fehlerfall<\/b><\/p>\n<p>Unbehandelte Fehler werden vom COM-Add-In nicht gemeldet. Wenn das COM-Add-In sich jedoch entgegen den Erwartungen unter Access nicht mehr meldet, schauen Sie in der Registry nach, ob es den Wert des Attributs <b>LoadBehavior <\/b>auf <b>2 <\/b>eingestellt hat &#8211; in dem Fall ist ein Fehler aufgetreten und Access hat den Registry-Eintrag so eingestellt, dass das Add-In nicht mehr beim Start geladen wird.<\/p>\n<p>&Atilde;&#8220;ndern Sie dies, indem Sie den Wert zur&uuml;ck auf <b>3 <\/b>stellen &#8211; das geht am einfachsten durch einen erneuten Doppelklick auf die Datei <b>aiuCOMAddIn.reg<\/b>.<\/p>\n<p>Eine einfache Fehlerbehandlung realisieren Sie folgenderma&szlig;en, wobei der Teil, in dem Sie einen Fehler erwarten, sich zwischen <b>Try <\/b>und <b>Catch <\/b>befindet und die Ausgabe einer entsprechenden Meldung zwischen der <b>Catch<\/b>&#8211; und der <b>End Try<\/b>-Zeile:<\/p>\n<pre>Try\r\nMsgBox(1 \/ 0)\r\nCatch e As Exception\r\nMsgBox(e.Message)\r\nEnd Try<\/pre>\n<p>F&uuml;r weitere Informationen zu dieser Vorgehensweise konsultieren Sie einfach die Visual Basic 2008-Onlinehilfe, indem Sie das gew&uuml;nschte Schl&uuml;sselwort markieren und die Taste <b>F1 <\/b>bet&auml;tigen.<\/p>\n<p><b>Men&uuml;eintrag zu Access hinzuf&uuml;gen<\/b><\/p>\n<p>Bevor Sie irgendwelche Funktionen des COM-Add-Ins von Access aus aufrufen k&ouml;nnen, brauchen Sie entsprechende Eintr&auml;ge in einer der Men&uuml;- oder Symbolleisten. <\/p>\n<p>Nehmen wir an, Sie m&ouml;chten einen Eintrag zum Ansicht-Men&uuml; hinzuf&uuml;gen. Dann brauchen Sie:<\/p>\n<ul>\n<li class=\"aufz-hlung\">je einen Verweis auf die <b>Microsoft Office x.0 Object Library<\/b> und die Microsoft Access x.0 Object Library,<\/li>\n<li class=\"aufz-hlung\">die Deklaration entsprechender Objektvariablen sowie<\/li>\n<li class=\"aufz-hlung\">einige Zeilen Code, die in der Ereignisprozedur <b>OnConnection<\/b> ausgef&uuml;hrt werden.<\/li>\n<\/ul>\n<p>Die Verweise f&uuml;gen Sie fast genau so wie den auf die <b>Extensibility.dll <\/b>hinzu &#8211; mit dem Unterschied, dass Sie sich nun auf der Registerseite <b>COM <\/b>bedienen (siehe Bild 5). Stellen Sie zuvor sicher, dass Sie die im Setup von Office 2003 enthaltene .NET-Unterst&uuml;tzung f&uuml;r die einzelnen Office-Anwendungen installiert haben. Diese finden Sie, wenn Sie in der Systemsteuerung von Windows doppelt auf <b>Software <\/b>klicken, dort den Eintrag <b>Microsoft Office Professional Edition 2003 <\/b>ausw&auml;hlen und auf <b>&Atilde;&#8220;ndern <\/b>klicken. Ein paar Schritte weiter k&ouml;nnen Sie die erforderliche Unterst&uuml;tzung wie in Bild 6 hinzuf&uuml;gen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic006_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: So machen Sie die Assembly COM-sichtbar.<\/span><\/b><\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic007_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Hinzuf&uuml;gen der .NET-Unterst&uuml;tzung f&uuml;r Office 2003<\/span><\/b><\/p>\n<p>Ob alles geklappt hat, k&ouml;nnen Sie an der Liste der Verweise feststellen: Der Office- und der Access-Verweis sowie die zusammen mit Access hinzugef&uuml;gten Verweise auf die DAO, die ADODB und die Microsoft Visual Basic for Applications Extensibility 5.3 sollten unter Pfad alle einen Eintrag besitzen, der mit <b>c:\\Windows\\assembly <\/b>beginnt, was bedeutet, dass diese im Global Assembly Cache (GAC) registriert sind.<\/p>\n<p>Anschlie&szlig;end f&uuml;gen Sie zun&auml;chst die folgenden beiden Zeilen oberhalb der Klasse ein:<\/p>\n<pre>Imports Microsoft.Office.Core\r\nImports Microsoft.Office.Interop<\/pre>\n<p>Die Deklaration kommt dann in den Kopf der Klasse:<\/p>\n<pre>Public objAccess As Access.Application\r\nPrivate cbr As CommandBar\r\nPrivate cbp As CommandBarPopup\r\nPrivate WithEvents cbb As CommandBarButton<\/pre>\n<p>Die Variable <b>cbb <\/b>wird deswegen als <b>WithEvents <\/b>deklariert, damit Sie im COM-Add-In eine Ereignisprozedur unterbringen k&ouml;nnen, die beim Anklicken der darin enthaltenen Men&uuml;schaltfl&auml;che ausgel&ouml;st wird.<\/p>\n<p>Der zum Anlegen der Schaltfl&auml;che notwendige Code sieht so aus:<\/p>\n<pre>Try\r\nobjAccess = CType(Application, _\r\nAccess.Application)\r\ncbr = Application.CommandBars(&quot;menu bar&quot;)\r\nFor Each cbc In cbr.Controls\r\nIf cbc.Caption = &quot;&amp;Ansicht&quot; Then\r\n    cbb = cbc.Controls. _\r\n    Add(MsoControlType. _\r\n    msoControlButton, , , , True)\r\n    cbb.Caption = &quot;aiuCOMAddIn&quot;\r\nEnd If\r\nNext cbc\r\nCatch e As Exception\r\nMsgBox(e.Message)\r\nEnd Try<\/pre>\n<p>Die <b>Try&#8230;Catch&#8230;End Try<\/b>-Struktur dient dazu, eventuelle Fehler durch Ausgabe einer entsprechenden Meldung abzufangen. Die erste Zeile weist der Variablen <b>objAccess<\/b> die an <b>OnConnection <\/b>&uuml;bergebene Objektvariable mit dem Verweis auf die aufrufende Anwendung zu. <\/p>\n<p>Der Rest d&uuml;rfte Entwicklern, die schon einmal einen Men&uuml;eintrag per VBA erzeugt haben, bekannt vorkommen. In diesem Fall soll dem Men&uuml; <b>Ansicht <\/b>der Men&uuml;leiste ein Eintrag namens <b>aiuCOMAddIn <\/b>zugewiesen werden (siehe Bild 7).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_02\/VS2008COMAddins-web-images\/pic008_opt.jpeg\" alt=\"missing image file\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Das Ergebnis des COM-Add-Ins. Ein Klick zeigt ein Meldungsfenster an.<\/span><\/b><\/p>\n<p>Prinzipiell geschieht das wie in VBA, es gibt allerdings kleine technische Feinheiten, auf die der Compiler Sie schon aufmerksam macht &#8211; so etwa, dass man Objekte nicht mehr mit dem <b>Set<\/b>-Schl&uuml;sselwort zuweist, sondern ohne.<\/p>\n<p>Nun fehlt noch die Ereignisprozedur, die beim Anklicken der Schaltfl&auml;che ausgel&ouml;st wird. Den Prozedurrahmen legen Sie genau wie im VBA-Editor an: W&auml;hlen Sie die als <b>WithEvents <\/b>deklarierte Men&uuml;schaltfl&auml;che <b>cbb <\/b>im linken Kombinationsfeld im oberen Bereich des Codefensters und anschlie&szlig;end den Eintrag <b>Click <\/b>im rechten.<\/p>\n<p>Die so entstandene Ereignisprozedur f&uuml;llen Sie mit einer einfachen <b>MsgBox<\/b>-Anweisung:<\/p>\n<pre>Private Sub cbb_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles cbb.Click\r\nMsgBox(&quot;Das aiuCOMAddIn funktioniert!&quot;)\r\nEnd Sub<\/pre>\n<p><b>Weitergabe<\/b><\/p>\n<p>Wenn Sie ein mit Visual Basic 2008 Express Edition erstelltes COM-Add-In weitergeben m&ouml;chten, muss in jedem Falle das .NET-Framework auf dem Zielrechner installiert sein. Falls dieses nicht in der aktuellen Version 3.5 vorliegt, die DLL aber Elemente der neuen Version beinhaltet, gibt es Probleme. Dies k&ouml;nnen Sie verhindern, indem Sie bei einem kleinen gemeinsamen Nenner beginnen und beispielsweise die Version 2.0 des .NET-Frameworks voraussetzen.<\/p>\n<p>Damit die DLL keine dort fehlenden Elemente enth&auml;lt, entfernen Sie diese nach M&ouml;glichkeit: Dazu stellen Sie im Visual Studio in den Eigenschaften des Projekts unter <b>Kompilieren <\/b>das Zielframework ein.<\/p>\n<p>Dazu klicken Sie dort auf die Schaltfl&auml;che <b>Erweiterte Kompilierungsoptionen&#8230; <\/b>und stellen die Option <b>Zielframework <\/b>auf <b>.NET-Framework 2.0 <\/b>ein.<\/p>\n<p>Falls dies noch nicht der Fall ist, m&uuml;ssen Sie Office (ab Version 2003) auf den Einsatz des COM-Add-Ins vorbereiten. Dazu installieren Sie die passende Unterst&uuml;tzung entweder direkt mit dem Office Paket (gibt es noch Entwickler, die sich nicht direkt das komplette Office-Paket auf die Festplatte schieben), holen dies mit einer &Atilde;&#8220;nderung der Installation wie oben beschrieben nach oder installieren die sogenannten PIAs (Primary Interop Assemblys), die Sie f&uuml;r Office 2003 etwa unter [2] herunterladen k&ouml;nnen.<\/p>\n<p>Dann kopieren Sie die COM-Add-In-DLL inklusive der selbst gebauten <b>Extensibility.dll <\/b>auf das Zielsystem und registrieren beide unter Verwendung des Programms <b>Regasm.exe <\/b>mit den bereits weiter oben angegebenen Anweisungen.<\/p>\n<p>Schlie&szlig;lich m&uuml;ssen Sie auch auf dem neuen Zielrechner noch in die Registry schreiben, unter welchem DLL-Klassennamen (hier <b>COMAddIn.COMAddIn<\/b>) Access das COM-Add-In beim Starten findet.<\/p>\n<p><b>Versionen<\/b><\/p>\n<p>Zu beachten ist die Version von Office auf dem Zielrechner. Nach unseren Beobachtungen k&ouml;nnen Sie Early Binding nur dann verwenden, wenn Sie konkret f&uuml;r eine Office-Version entwickeln.<\/p>\n<p>Ein COM-Add-In, das mit Verweisen f&uuml;r Office 2003 und Access 2003 ausgestattet ist, arbeitet auch nur unter Office 2003, nicht aber unter Office XP oder Office 2007.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Zusammenfassung und Ausblick<\/p>\n<p>Dieser Beitrag stellt nur die grundlegenden Techniken zum Erstellen von COM-Add-Ins mit Visual Basic 2008 Express Edition vor &#8211; allein die M&ouml;glichkeit, dies mit der kostenlosen Version von Visual Studio erledigen zu k&ouml;nnen, ist aber sehr reizvoll.<\/p>\n<p>Ein einfaches COM-Add-In, das lediglich einen Men&uuml;eintrag mit einer dadurch ausgel&ouml;sten Funktion liefert, ist nebenher nur die Spitze des Eisbergs.<\/p>\n<p>Sie k&ouml;nnen noch viel mehr damit erledigen &#8211; beispielsweise das Ribbon von Access 2007 unabh&auml;ngig von einer einzelnen Datenbank mit neuen Eintr&auml;gen versehen oder einfach nur anpassen, Custom Task Panes zu Access 2007 und anderen Office-Anwendungen hinzuf&uuml;gen, um Informationen aus der aktuellen oder auch aus anderen Anwendungen wie Outlook oder Excel anzuzeigen, und mehr.<\/p>\n<p>Ein wesentlicher Punkt f&uuml;r Profi-Entwickler ist auch, dass Sie mit COM-Add-Ins auch die Entwicklungsumgebung von Access und den &uuml;brigen Office-Anwendungen erweitern k&ouml;nnen.<\/p>\n<p>In einem folgenden Beitrag gehen wir weiter ins Detail und stellen die Erstellung eines kompletten COM-Add-Ins vor.<\/p>\n<p class=\"zwischen-berschriftquellen\">Quellen<\/p>\n<p class=\"quellen\">[1] .NET Framework 2.0: http:\/\/www.microsoft.com\/downloads\/thankyou.aspxfamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displayLang=de<\/p>\n<p class=\"quellen\">[2] PIAs f&uuml;r Office 2003: http:\/\/www.microsoft.com\/downloads\/details.aspxFamilyID=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&amp;DisplayLang=en<\/p>\n<p class=\"quellen\">[3] PIAs f&uuml;r Office XP: http:\/\/www.microsoft.com\/downloads\/details.aspxFamilyId=C41BD61E-3060-4F71-A6B4-01FEBA508E52&amp;displaylang=en<\/p>\n<p class=\"quellen\">[4] PIAs f&uuml;r Office 2007: http:\/\/www.microsoft.com\/downloads\/details.aspxfamilyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513&amp;displaylang=en<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>VB2008DLLs.zip<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/86BE1063-1325-44EE-B264-748B29F48007\/aiu_584.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>F&uuml;r die Erstellung von COM-Add-Ins brauchte man bislang teure Werkzeuge &#8211; so schien es zumindest. Mit ein wenig Bastelei k&ouml;nnen Sie diese jedoch auch mit der kostenlosen Express Edition von Visual Basic 2008 selber bauen. Dies er&ouml;ffnet eine Menge M&ouml;glichkeiten &#8211; aber lesen Sie doch einfach selbst.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[44000017,66022008,662008,44000026,44000025],"tags":[],"class_list":["post-55000584","post","type-post","status-publish","format-standard","hentry","category-NET","category-66022008","category-662008","category-Interaktiv","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>COM-Add-Ins mit Visual Basic 2008 Express Edition - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"COM-Add-Ins mit Visual Basic 2008 Express Edition\" \/>\n<meta property=\"og:description\" content=\"F&uuml;r die Erstellung von COM-Add-Ins brauchte man bislang teure Werkzeuge - so schien es zumindest. Mit ein wenig Bastelei k&ouml;nnen Sie diese jedoch auch mit der kostenlosen Express Edition von Visual Basic 2008 selber bauen. Dies er&ouml;ffnet eine Menge M&ouml;glichkeiten - aber lesen Sie doch einfach selbst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:20:20+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"COM-Add-Ins mit Visual Basic 2008 Express Edition\",\"datePublished\":\"2021-02-11T21:20:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/\"},\"wordCount\":3020,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a4285dd81b2543e4b0b303e069f49979\",\"articleSection\":[\".NET\",\"2\\\/2008\",\"2008\",\"Interaktiv\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/\",\"name\":\"COM-Add-Ins mit Visual Basic 2008 Express Edition - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a4285dd81b2543e4b0b303e069f49979\",\"datePublished\":\"2021-02-11T21:20:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a4285dd81b2543e4b0b303e069f49979\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a4285dd81b2543e4b0b303e069f49979\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"COM-Add-Ins mit Visual Basic 2008 Express Edition\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"COM-Add-Ins mit Visual Basic 2008 Express Edition - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/","og_locale":"de_DE","og_type":"article","og_title":"COM-Add-Ins mit Visual Basic 2008 Express Edition","og_description":"F&uuml;r die Erstellung von COM-Add-Ins brauchte man bislang teure Werkzeuge - so schien es zumindest. Mit ein wenig Bastelei k&ouml;nnen Sie diese jedoch auch mit der kostenlosen Express Edition von Visual Basic 2008 selber bauen. Dies er&ouml;ffnet eine Menge M&ouml;glichkeiten - aber lesen Sie doch einfach selbst.","og_url":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:20:20+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"COM-Add-Ins mit Visual Basic 2008 Express Edition","datePublished":"2021-02-11T21:20:20+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/"},"wordCount":3020,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979","articleSection":[".NET","2\/2008","2008","Interaktiv","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/","url":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/","name":"COM-Add-Ins mit Visual Basic 2008 Express Edition - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979","datePublished":"2021-02-11T21:20:20+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/a4285dd81b2543e4b0b303e069f49979"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/COMAddIns_mit_Visual_Basic_2008_Express_Edition\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"COM-Add-Ins mit Visual Basic 2008 Express Edition"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000584"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000584\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}