{"id":55000433,"date":"2024-08-01T00:00:00","date_gmt":"2024-08-14T14:44:35","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=433"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Klassenprogrammierung_mit_COMAddIn_vereinfachen","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/","title":{"rendered":"Klassenprogrammierung mit COM-Add-In vereinfachen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/2685e24690c34f98a57fb19be4eb7cf6\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_001.png\" alt=\"Men&uuml;eintrag unseres COM-Add-Ins\" width=\"649,627\" height=\"180,6654\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Men&uuml;eintrag unseres COM-Add-Ins<\/span><\/b><\/p>\n<p><b>Im Artikel &#8220;VBA-Editor: Klasseneigenschaften per Mausklick&#8221; (www.vbentwickler.de\/422) haben wir eine Prozedur vorgestellt, mit denen man aus einer einfachen Variablendeklaration innerhalb eines Klassenmoduls eine private Membervariable und jeweils eine Property Get-Methode und eine Property Set\/Let-Methode erzeugen kann. Der einzige Haken bei dieser L&ouml;sung ist, dass man diese bisher noch &uuml;ber den Direktbereich aufrufen musste. Da das nicht sonderlich komfortabel ist, stellen wir in diesem Artikel eine L&ouml;sung vor, bei der wir mit twinBASIC ein COM-Add-In f&uuml;r den VBA-Editor erstellen, mit dem wir die Funktion aus dem oben genannten Artikel &uuml;ber die Men&uuml;leiste, die Symbolleiste oder auch &uuml;ber das Kontextmen&uuml; des VBA-Editors aufrufen kann. <\/b><\/p>\n<p>Wir bauen hier auf den Vorbereitungen auf, die wir im Artikel <b>twinBASIC: COM-Add-In f&uuml;r den VBA-Editor <\/b>(<b>www.vbentwickler.de\/421<\/b>) vorgestellt haben. Hier haben wir ein Basis-COM-Add-In f&uuml;r den VBA-Editor vorgestellt, das einfach nur ein paar Dummy-Eintr&auml;ge im Men&uuml; und im Kontextmen&uuml; anzeigt, die Meldungsfenster liefern. Den ersten sehen wir in Bild 1.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_001.png\" alt=\"Men&uuml;eintrag unseres COM-Add-Ins\" width=\"649,627\" height=\"180,6654\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Men&uuml;eintrag unseres COM-Add-Ins<\/span><\/b><\/p>\n<p>Den zweiten Eintrag, den wir im Kontextmen&uuml; untergebracht haben, finden wir im Kontextmen&uuml; in Bild 2 ganz unten.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_002.png\" alt=\"Men&uuml;eintrag im Kontextmen&uuml;\" width=\"499,6267\" height=\"429,7674\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Men&uuml;eintrag im Kontextmen&uuml;<\/span><\/b><\/p>\n<p>In der Symbolleiste haben wir noch keinen Eintrag untergebracht. Auch das wollen wir gegebenenfalls noch erledigen. Erst einmal schauen wir uns jedoch die zu programmierende Funktion an &#8211; wo im Men&uuml; wir diese optimal unterbringen.<\/p>\n<h2>Umwandeln von Variablen in Property Get\/Let\/Set<\/h2>\n<p>Die Aufgabe lautet, die Prozedur, die wir im oben genannten Artikel entwickelt haben, &uuml;ber ein COM-Add-In f&uuml;r den VBA-Editor verf&uuml;gbar zu machen. Diese Aufgabe ist einfach &#8211; wir brauchen eigentlich nur unsere Men&uuml;punkte umzubenennen und diesen den Aufruf der gew&uuml;nschten Prozedur hinzuzuf&uuml;gen.<\/p>\n<p>Allerdings wollen wir das mit Bedacht tun, damit wir den bestm&ouml;glichen Ort f&uuml;r den Men&uuml;eintrag finden. Es geht darum, eine oder mehrere Variablen im Code eines Klassenmoduls zu markieren und dann die Prozedur <b>VariableToProperty <\/b>aufzurufen. Diese holt sich die aktuelle Markierung und passt den gefundenen Code entsprechend an.<\/p>\n<p>Um diese Funktion nach dem Selektieren der zu bearbeitenden Code-Passagen aufzurufen: Was w&auml;re der geeignete Ort? Wir wollen mit m&ouml;glichst wenig Klicks und m&ouml;glichst wenig Mausmetern zum Ziel kommen. Wenn wir also einen Eintrag im Men&uuml; verwenden, sollte dieser direkt erreichbar sein. Dazu bietet sicher eher die Symbolleiste an, in der wir den Befehl &uuml;ber ein geeignetes Icon anbieten k&ouml;nnen. Allerdings muss man f&uuml;r eine solche erkl&auml;rungsbed&uuml;rftige Aufgabe erst einmal ein passendes Icon finden.<\/p>\n<p>Die zweite M&ouml;glichkeit ist, diesen Befehl in der Men&uuml;leiste selbst unterzubringen. Hier sollten wir allerdings keine Befehle in der Hauptmen&uuml;leiste unterbringen, sondern vielleicht einen Hauptmen&uuml;punkt unterbringen, der nicht nur diesen, sondern gegebenenfalls noch andere Eintr&auml;ge mit Aufrufen unserer selbst definierten Funktionen enth&auml;lt. Die Struktur mit <b>Mein Men&uuml;|Mein Befehl <\/b>ist daher schon passend. Damit w&auml;ren wir nach dem Markieren der zu bearbeitenden Codezeilen mit zwei Mausklicks am Ziel.<\/p>\n<p>Die n&auml;chste M&ouml;glichkeit ist das Kontextmen&uuml;. Hier ben&ouml;tigen wir grunds&auml;tzlich einen Klick mehr, weil wir diese erst einmal mit einem Rechtsklick anzeigen m&uuml;ssen. Wenn wir den Befehl dann direkt im Kontextmen&uuml; anzeigen, kommen wir schnell zum Ziel. Wenn das Kontextmen&uuml; noch keine Eintr&auml;ge weiterer COM-Add-Ins enth&auml;lt, kann man das so machen. Wenn wir jedoch planen, noch weitere benutzerdefinierte Funktionen zu diesem oder anderen COM-Add-Ins hinzuzuf&uuml;gen, k&ouml;nnen wir auch einen Unterpunkt hinzuf&uuml;gen.<\/p>\n<p>Das w&auml;re dann zwar ein Mausklick mehr, aber letztlich sparen wir durch die Funktion an sich schon so viel Zeit, dass sich das nicht besonders auswirken sollte.<\/p>\n<p>Also starten wir wie folgt:<\/p>\n<ul>\n<li>Wir f&uuml;gen der Men&uuml;leiste einen Men&uuml;punkt beispielsweise namens <b>AMV-Tools <\/b>hinzu. Unter diesem legen wir den Aufruf zum Umwandeln der Variablen in <b>Property Get<\/b>\/<b>Let<\/b>\/<b>Set<\/b>-Prozeduren an.<\/li>\n<li>Wir f&uuml;gen auch dem Kontextmen&uuml; einen Men&uuml;punkt namens <b>AMV-Tools <\/b>hinzu. Dieser enth&auml;lt wiederum eine Schaltfl&auml;che zum Aufrufen der gew&uuml;nschten Funktion.<\/li>\n<li>Schlie&szlig;lich wollen wir den Befehl auch noch in der Symbolleiste unterbringen. Hier k&ouml;nnen wir den Befehl direkt unterbringen, sollten uns jedoch auf ein Icon beschr&auml;nken.<\/li>\n<li>Au&szlig;erdem f&uuml;gen wir die gew&uuml;nschte Funktion zum Umwandeln von Variablen in Propertys hinzu und testen diese ausf&uuml;hrlich.<\/li>\n<\/ul>\n<h2>Passende Symbolleiste finden<\/h2>\n<p>Der VBA-Editor enth&auml;lt einige Symbolleisten. Welche verwenden wir optimalerweise f&uuml;r unsere Funktion? Schauen wir uns erst einmal an, welche eingebauten Symbolleisten der VBA-Editor alle anbietet. Dazu lassen wir in einer VBA-Anwendung die folgende Prozedur laufen:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>ListMenus()\r\n     <span style=\"color:blue;\">Dim <\/span>cbr<span style=\"color:blue;\"> As <\/span>Office.CommandBar\r\n     For Each cbr In VBE.CommandBars\r\n         <span style=\"color:blue;\">If <\/span>cbr.Type = msoBarTypeNormal<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">Debug.Print<\/span> cbr.Name\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> cbr\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dies liefert das folgende Ergebnis:<\/p>\n<pre>Voreinstellung\r\nBearbeiten\r\nDebuggen\r\nUserForm\r\nClipboard<\/pre>\n<p>Wenn wir uns diese Symbolleisten einmal anschauen, k&ouml;nnen wir besser entscheiden, welche der richtige Ort ist. Dazu blenden wir einmal alle Symbolleisten ein. Das erledigen wir &uuml;ber den Men&uuml;punkt <b>Ansicht|Symbolleisten<\/b>. Hier finden wir alle verf&uuml;gbaren Symbolleisten vor &#8211; wobei aus der per VBA ausgegebenen Liste der Eintrag <b>Clipboard<\/b> fehlt. Daf&uuml;r finden wir einen zus&auml;tzlichen Eintrag namens <b>Anpassen&#8230;<\/b> (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_003.png\" alt=\"Einblenden aller Symbolleisten\" width=\"599,6265\" height=\"521,5065\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Einblenden aller Symbolleisten<\/span><\/b><\/p>\n<p>Die eingeblendeten Symbolleisten erscheinen zun&auml;chst freischwebend, was normalerweise nicht erw&uuml;nscht ist &#8211; au&szlig;er, man ben&ouml;tigt die entsprechende Funktion direkt in der N&auml;he der damit zu bearbeitenden Elemente. Dann stellt sich jedoch die Frage, ob der Einsatz eines Kontextmen&uuml;s nicht ohnehin die bessere L&ouml;sung w&auml;re.<\/p>\n<p>F&uuml;r unseren Zweck scheint uns jedenfalls die Symbolleiste <b>Bearbeiten <\/b>am geeignetsten zu sein. Also f&uuml;gen die unseren Befehl dort hinzu.<\/p>\n<h2>Einf&uuml;gen eines Befehls in der Bearbeiten-Symbolleiste und mehr<\/h2>\n<p>Nun schauen wir uns an, wie wir die im Artikel <b>twinBASIC: COM-Add-In f&uuml;r den VBA-Editor <\/b>(<b>www.vbentwickler.de\/421<\/b>) vorgestellte Vorlage genau anpassen, um unsere Funktionen im VBA-Editor bereitzustellen. Wir gehen an dieser Stelle nicht mehr auf alle dort beschriebenen Details ein.<\/p>\n<p>Um die Men&uuml;s mit unseren Schaltfl&auml;chen zu f&uuml;llen, ben&ouml;tigen wir zuerst einmal die Prozedur, die beim Verbinden des VBA-Editors mit dem COM-Add-In ausgel&ouml;st wird.<\/p>\n<p>Diese weist der Objektvariablen <b>objVBE<\/b>, die wir &ouml;ffentlich in einem Modul namens <b>mdlGlobal<\/b> definieren, den mit dem Parameter <b>Application<\/b> gelieferten Verweis auf die aufrufende Anwendung zu:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>objVBE<span style=\"color:blue;\"> As <\/span>VBIDE.VBE<\/pre>\n<p>Au&szlig;erdem rufen wir in dieser Prozedur, die in Listing 1 abgebildet ist, die Prozedur <b>CreateToolbar <\/b>auf.<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>OnConnection(ByVal Application<span style=\"color:blue;\"> As Object<\/span>, ByVal ConnectMode<span style=\"color:blue;\"> As <\/span>ext_ConnectMode, ByVal AddInInst<span style=\"color:blue;\"> As Object<\/span>, _\r\n         ByRef custom<span style=\"color:blue;\"> As Variant<\/span>()) Implements IDTExtensibility2.OnConnection\r\n     <span style=\"color:blue;\">Set<\/span> objVBE = Application\r\n     <span style=\"color:blue;\">Set<\/span> objAddIn = AddInInst\r\n     isConnected = <span style=\"color:blue;\">True<\/span>\r\n     CreateToolBar()\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Diese Prozedur wird beim Verbinden des COM-Add-Ins ausgel&ouml;st.<\/span><\/b><\/p>\n<p>Diese referenziert zuerst die Men&uuml;leiste mit der Variablen <b>cbr <\/b>und f&uuml;gt dieser ein Untermen&uuml; hinzu (siehe Listing 2). Dieses platziert sie vor dem achten Untermen&uuml;, stellt die Beschriftung auf den Wert aus der Konstanten <b>cStrMenu <\/b>ein (<b>AMV-Tools<\/b>) und f&uuml;gt diesem ein mit der Variablen <b>cbb <\/b>referenziertes <b>CommandBarButton<\/b>-Element hinzu.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>CreateToolBar()\r\n     <span style=\"color:blue;\">Dim <\/span>cbr<span style=\"color:blue;\"> As <\/span>CommandBar\r\n     <span style=\"color:blue;\">Dim <\/span>cbp<span style=\"color:blue;\"> As <\/span>CommandBarPopup\r\n     <span style=\"color:blue;\">Dim <\/span>cbpContext<span style=\"color:blue;\"> As <\/span>CommandBarPopup\r\n     <span style=\"color:blue;\">Set<\/span> cbr = objVBE.CommandBars(\"Men&uuml;leiste\") ''Eintrag in Men&uuml;leiste anlegen\r\n     <span style=\"color:blue;\">Set<\/span> cbp = cbr.Controls.Add(msoControlPopup, Temporary:=<span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">With<\/span> cbp\r\n         .Move Before:=8\r\n         .Caption = cStrMenu\r\n         <span style=\"color:blue;\">Set<\/span> cbbMenu =.Controls.Add(msoControlButton, Temporary:=<span style=\"color:blue;\">True<\/span>)\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">With<\/span> cbbMenu\r\n         .Caption = cStrCommandButton\r\n         .BeginGroup = <span style=\"color:blue;\">True<\/span>\r\n         .Picture = GetImage(\"GetSet.png\")\r\n         <span style=\"color:blue;\">Set<\/span> cbbMenuEvent = objVBE.Events.CommandBarEvents(cbbMenu)\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> cbr = objVBE.CommandBars(\"Bearbeiten\") ''Eintrag in Symbolleiste ''Bearbeiten'' anlegen\r\n     <span style=\"color:blue;\">Set<\/span> cbbToolbar = cbr.Controls.Add(msoControlButton, temporary:=<span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">With<\/span> cbbToolbar\r\n         .BeginGroup = <span style=\"color:blue;\">True<\/span>\r\n         .Picture = GetImage(\"GetSet.png\")\r\n         <span style=\"color:blue;\">Set<\/span> cbbToolbarEvent = objVBE.Events.CommandBarEvents(cbbToolbar)\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> cbpContext = objVBE.CommandBars(\"Code Window\").Controls.Add(msoControlPopup, Temporary:=<span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">With<\/span> cbpContext\r\n         .Caption = cStrMenu\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> cbbContext = cbpContext.Controls.Add(Temporary:=<span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">With<\/span> cbbContext\r\n         .Caption = cStrCommandButton\r\n         .Picture = GetImage(\"GetSet.png\")\r\n         .BeginGroup = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> cbbContextEvent = objVBE.Events.CommandBarEvents(cbbContext)\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Diese Prozedur erstellt die CommandBarButton-Objekte in den verschiedenen Men&uuml;s.<\/span><\/b><\/p>\n<p>F&uuml;r dieses legt es die Beschriftung aus der Konstanten <b>cStrCommandButton <\/b>fest (<b>Getter und Setter f&uuml;r Variable<\/b>) und stellt das Icon mit der <b>Picture<\/b>-Eigenschaft auf das Ergebnis der Funktion <b>GetImage <\/b>mit dem Parameter <b>GetSet.png <\/b>ein. Schlie&szlig;lich weisen wir der Objektvariablen <b>cbbMenuEvent <\/b>die Ereignisse des <b>CommandBarButton<\/b>-Objekts zu.<\/p>\n<p>Die Objektvariablen f&uuml;r die Men&uuml;s deklarieren wir im allgemeinen Teil des Men&uuml;s wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>cbbToolbar<span style=\"color:blue;\"> As <\/span>CommandBarButton\r\n<span style=\"color:blue;\">Private <\/span>cbbMenu<span style=\"color:blue;\"> As <\/span>CommandBarButton\r\n<span style=\"color:blue;\">Private <\/span>cbbContext<span style=\"color:blue;\"> As <\/span>CommandBarButton<\/pre>\n<p>Direkt danach folgen die Deklarationen der Event-Klassen f&uuml;r die drei anzulegenden Schaltfl&auml;chen:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>WithEvents cbbToolbarEvent<span style=\"color:blue;\"> As <\/span>_\r\n     VBIDE.CommandBarEvents\r\n<span style=\"color:blue;\">Private <\/span>WithEvents cbbContextEvent<span style=\"color:blue;\"> As <\/span>_\r\n     VBIDE.CommandBarEvents\r\n<span style=\"color:blue;\">Private <\/span>WithEvents cbbMenuEvent<span style=\"color:blue;\"> As <\/span>VBIDE.commandbarEvents<\/pre>\n<p>Damit legen wir nun den Eintrag in der Symbolleiste an. Dazu referenzieren wir die Symbolleiste <b>Bearbeiten<\/b> mit der Variablen <b>cbr<\/b>. Dieser f&uuml;gen wir ein neues Element hinzu und referenzieren es mit <b>cbbToolbar<\/b>. Dieses erh&auml;lt keine Beschriftung, aber ebenfalls das Icon. Au&szlig;erdem referenzieren wir seine Ereignisse mit der Variablen <b>cbbToolbarEvent<\/b>.<\/p>\n<p>Schlie&szlig;lich folgt noch der Eintrag im Kontextmen&uuml;. Dazu referenzieren wir das Kontextmen&uuml; mit dem Namen <b>Code Window<\/b> und weisen diesem ein neues Untermen&uuml; hinzu, das wir mit der Variablen <b>cbpContext<\/b> referenzieren und das wie das Untermen&uuml; in der Men&uuml;leiste die Beschriftung aus <b>cStrMenu <\/b>erh&auml;lt.<\/p>\n<p>Diesem Untermen&uuml; f&uuml;gen wir eine Schaltfl&auml;che hinzu, die genauso aufgebaut ist wie die im Hauptmen&uuml;. Wir referenzieren sie aber mit der Variablen <b>cbbContext <\/b>und seine Events mit der Variablen <b>cbbContextEvent<\/b>.<\/p>\n<p>Damit haben wir alle Men&uuml;eintrage hinzugef&uuml;gt. Nun m&uuml;ssen wir die Ereignisprozeduren definieren.<\/p>\n<h2>Ereignisse f&uuml;r die drei Men&uuml;befehle programmieren<\/h2>\n<p>Dazu w&auml;hlen wir im Codefenster von twinBASIC jeweils oben im mittleren Auswahlfeld den Namen des Klassenmoduls aus und im rechten dann den Eintrag Click (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_003.png\" alt=\"Anlegen der Ereignisprozeduren f&uuml;r die Men&uuml;buttons\" width=\"649,627\" height=\"328,0135\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Anlegen der Ereignisprozeduren f&uuml;r die Men&uuml;buttons<\/span><\/b><\/p>\n<p>Dies legt die drei Ereignisprozeduren an, die wir wie in Listing 3 f&uuml;llen. Diese rufen jeweils die Prozedur <b>LaunchFunction <\/b>auf und stellen die Parameter <b>handled <\/b>auf <b>True <\/b>und <b>CancelDefault <\/b>auf <b>False <\/b>ein.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cbbMenuEvent_Click(ByVal CommandBarControl<span style=\"color:blue;\"> As Object<\/span>, handled<span style=\"color:blue;\"> As Boolean<\/span>, CancelDefault<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     LaunchFunction\r\n     handled = <span style=\"color:blue;\">True<\/span>\r\n     CancelDefault = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>cbbToolbarEvent_Click(ByVal CommandBarControl<span style=\"color:blue;\"> As Object<\/span>, handled<span style=\"color:blue;\"> As Boolean<\/span>, CancelDefault<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     LaunchFunction\r\n     handled = <span style=\"color:blue;\">True<\/span>\r\n     CancelDefault = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>cbbContextEvent_Click(ByVal CommandBarControl<span style=\"color:blue;\"> As Object<\/span>, handled<span style=\"color:blue;\"> As Boolean<\/span>, CancelDefault<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     LaunchFunction\r\n     handled = <span style=\"color:blue;\">True<\/span>\r\n     CancelDefault = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Ereignisprozeduren f&uuml;r die Men&uuml;schaltfl&auml;chen<\/span><\/b><\/p>\n<p>Die Prozedur <b>LaunchFunction <\/b>sieht wie folgt aus und ruft lediglich mit der <b>Call<\/b>-Anweisung die Prozedur <b>VariableToProperty <\/b>auf:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>LaunchFunction()\r\n     <span style=\"color:blue;\">Call<\/span> VariableToProperty()\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese wiederum erledigt die eigentliche Arbeit. Da wir die Prozedur bereits im Artikel <b>VBA-Editor: Klasseneigenschaften per Mausklick<\/b> (<b>www.vbentwickler.de\/422<\/b>) ausf&uuml;hrlich beschrieben haben, gehen wir hier nur auf die wenigen &Auml;nderungen ein, die f&uuml;r den Betrieb in unserem COM-Add-In notwendig sind.<\/p>\n<p>In der Prozedur <b>VariableToProperty <\/b>ist nur die folgende &Auml;nderung notwendig:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VariableToProperty()\r\n     ...\r\n     <span style=\"color:blue;\">Set<\/span> objCodePane = objVBE.ActiveCodePane ''objVBE statt VBE\r\n     ...\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit l&auml;uft das COM-Add-In wie gew&uuml;nscht und wir k&ouml;nnen es bereits einmal erstellen. Dazu rufen wir im COM-Add-In den Befehl <b>File|Build <\/b>auf. Mit dem Beispielprojekt aus dem Download sollte das Erstellen problemlos durchlaufen.<\/p>\n<p>Danach kannst Du eine Office-Anwendung &ouml;ffnen und mit <b>Alt + F11 <\/b>den VBA-Editor anzeigen. Hier kannst Du die Funktion des COM-Add-Ins nun &uuml;ber drei M&ouml;glichkeiten aufrufen.<\/p>\n<p>Die erste ist die Men&uuml;leiste, also das Hauptmen&uuml; des VBA-Editors. Hier finden wir den Befehl in einem eigenen Untermen&uuml; namens <b>AMV-Tools <\/b>unter dem Namen <b>Getter und Setter f&uuml;r Variable<\/b> (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_004.png\" alt=\"Aufruf des COM-Add-Ins &uuml;ber die Men&uuml;leiste\" width=\"649,627\" height=\"215,3102\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Aufruf des COM-Add-Ins &uuml;ber die Men&uuml;leiste<\/span><\/b><\/p>\n<p>Die zweite ist der Aufruf &uuml;ber die Symbolleiste <b>Bearbeiten<\/b>. Hier haben wir an letzter Stelle unseren Befehl mit dem Icon mit der Beschriftung <b>Get\/Set <\/b>hinzugef&uuml;gt (siehe Bild 6). Dieser ruft die gleiche Funktion auf.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_005.png\" alt=\"Aufruf des COM-Add-Ins per Symbolleiste\" width=\"649,627\" height=\"246,506\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Aufruf des COM-Add-Ins per Symbolleiste<\/span><\/b><\/p>\n<p>Schlie&szlig;lich finden wir den Befehl auch noch im Kontextmen&uuml;. Hier haben wir ebenfalls ein Untermen&uuml; namens <b>AMV-Tools <\/b>vorgeschaltet (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_006.png\" alt=\"Aufruf des COM-Add-Ins per Kontextmen&uuml;leiste\" width=\"649,627\" height=\"528,5275\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Aufruf des COM-Add-Ins per Kontextmen&uuml;leiste<\/span><\/b><\/p>\n<p>Dieser Ansatz geht davon aus, dass wir unter dem Men&uuml; <b>AMV-Tools <\/b>noch weitere Funktionen &uuml;ber dieses oder andere COM-Add-Ins einbauen.<\/p>\n<p>Wenn das nicht der Fall ist, k&ouml;nnen wir den Befehl auch einzeln ohne das Untermen&uuml; im Kontextmen&uuml; anzeigen lassen. Den letzten Teil, in dem wir das Untermen&uuml; und den Befehl im Kontextmen&uuml; anlegen, ersetzen wir nun durch die folgenden Anweisungen:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> cbr = objVBE.CommandBars(\"Code Window\")\r\n<span style=\"color:blue;\">Set<\/span> cbbContext = cbr.Controls.Add(Temporary:=True, _\r\n      Before:=6)\r\n<span style=\"color:blue;\">With<\/span> cbbContext\r\n     .Caption = cStrCommandButton\r\n     .Picture = GetImage(\"GetSet.png\")\r\n     .BeginGroup = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> cbbContextEvent = _\r\n        objVBE.Events.CommandBarEvents(cbbContext)\r\nEnd <span style=\"color:blue;\">With<\/span><\/pre>\n<p>Durch den Parameter <b>Before<\/b> in der <b>Add<\/b>-Methode sorgen wir daf&uuml;r, dass der Befehl direkt hinter den beiden Befehlen <b>Block auskommentieren <\/b>und <b>Auskommentierung des Blocks aufheben <\/b>erscheint (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_007.png\" alt=\"Aufruf des COM-Add-Ins direkt &uuml;ber das Kontextmen&uuml;\" width=\"424,6267\" height=\"353,3235\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Aufruf des COM-Add-Ins direkt &uuml;ber das Kontextmen&uuml;<\/span><\/b><\/p>\n<p>Damit k&ouml;nnen wir nun wie in den vorherigen Screenshots gezeigt eine Zeile mit einer Variablendeklaration markieren, die wir in eine private Variable mit Getter- und Setter umwandeln wollen (siehe Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_008.png\" alt=\"Ergebnis der Funktion\" width=\"424,6267\" height=\"281,0331\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Ergebnis der Funktion<\/span><\/b><\/p>\n<h2>Das COM-Add-In aus dem Download f&uuml;r eigene Zwecke nutzen<\/h2>\n<p>Wenn Du das COM-Add-In auf Deinem eigenen Rechner f&uuml;r den Einsatz im VBA-Editor installieren m&ouml;chtest, sind ein paar Handgriffe n&ouml;tig.<\/p>\n<p>Als Erstes kopierst Du die f&uuml;r Deine Office-Version passende Version in einen Ordner Deiner Wahl &#8211; also f&uuml;r die 32-Bit- oder die 64-Bit-Version.<\/p>\n<p>Beide Varianten findest Du im Download:<\/p>\n<ul>\n<li><b>amvVBExtensions_win32.dll<\/b><\/li>\n<li><b>amvVBExtensions_win64.dll<\/b><\/li>\n<\/ul>\n<p>Nun m&uuml;ssen wir das COM-Add-In erst einmal registrieren. Dazu starten wir die Eingabeaufforderung von Windows im Administrator-Modus.<\/p>\n<p>Das gelingt wie folgt:<\/p>\n<ul>\n<li>Gib den Suchbegriff <b>cmd<\/b> in die Windows-Suche ein.<\/li>\n<li>Klicke mit der rechten Maustaste auf den nun erscheinenden Eintrag Eingabeaufforderung und w&auml;hle den Kontextmen&uuml;befehl <b>Als Administrator &ouml;ffnen <\/b>auf oder <\/li>\n<li>klicke direkt auf den Befehl <b>Als Administrator ausf&uuml;hren <\/b>(siehe Bild 10).<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_009.png\" alt=\"Starten der Eingabeaufforderung\" width=\"599,6265\" height=\"419,0442\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Starten der Eingabeaufforderung<\/span><\/b><\/p>\n<\/ul>\n<p>Hier geben wir nun den Befehl <b>RegSvr32.exe <\/b>ein und geben als Parameter den Pfad zur <b>.dll<\/b>-Datei an. Den Pfad k&ouml;nnen wir &uuml;ber den Windows Explorer holen, indem wir mit der rechten Maustaste auf die Datei klicken und den Befehl <b>Als Pfad kopieren <\/b>bet&auml;tigen.<\/p>\n<p>Danach f&uuml;gen wir den Pfad so ein, dass der Befehl wie in Bild 11 aussieht. Nach dem Ausf&uuml;hren erhalten wir die ebenfalls dort abgebildete Meldung.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_04\/pic_433_010.png\" alt=\"Registrieren des COM-Add-Ins\" width=\"599,6265\" height=\"344,9908\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Registrieren des COM-Add-Ins<\/span><\/b><\/p>\n<p>Damit ist das COM-Add-In bereits registriert und kann im VBA-Editor verwendet werden.<\/p>\n<p>&Uuml;brigens hei&szlig;t die Anwendung zum Registrieren auch f&uuml;r die 64-Bit-Version RegSvr32.exe.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Artikel zeigt, wie Du eine Funktion, wie Du sie vielleicht einmal entwickelt hast, um Dir Zeit und Arbeit zu sparen, in einem COM-Add-In unterbringen und mit diesem jederzeit im VBA-Editor von Office zur Verwendung anbieten kannst.<\/p>\n<p>In weiteren Artikel schauen wir uns nun noch andere interessante Erweiterungen an und f&uuml;gen diese zu unserem COM-Add-In hinzu.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>KlassenprogrammierungMitCOMAddInVereinfachen.zip<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/87B79F0B-BB86-472B-802F-A9C6F58E19C5\/vbe_433.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>.NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w&uuml;nschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k&ouml;nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k&ouml;nnen.<\/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":[662024,66042024,44000024,44000037],"tags":[],"yst_prominent_words":[],"class_list":["post-55000433","post","type-post","status-publish","format-standard","hentry","category-662024","category-66042024","category-Berichte_und_Reporting","category-VBAEditor_programmieren"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-08-14T14:44:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#blogposting\",\"name\":\"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler\",\"headline\":\"Klassenprogrammierung mit COM-Add-In vereinfachen\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/2685e24690c34f98a57fb19be4eb7cf6\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#articleImage\"},\"datePublished\":\"2024-08-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#webpage\"},\"articleSection\":\"2024, 4\\\/2024, Berichte und Reporting, VBA-Editor programmieren\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/#listItem\",\"name\":\"2024\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/#listItem\",\"position\":2,\"name\":\"2024\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/4\\\/2024\\\/#listItem\",\"name\":\"4\\\/2024\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/4\\\/2024\\\/#listItem\",\"position\":3,\"name\":\"4\\\/2024\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/4\\\/2024\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#listItem\",\"name\":\"Klassenprogrammierung mit COM-Add-In vereinfachen\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/#listItem\",\"name\":\"2024\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#listItem\",\"position\":4,\"name\":\"Klassenprogrammierung mit COM-Add-In vereinfachen\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/4\\\/2024\\\/#listItem\",\"name\":\"4\\\/2024\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/\",\"name\":\"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler\",\"description\":\".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\\u00f6nnen.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2024-08-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler","description":".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.","canonical_url":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#blogposting","name":"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler","headline":"Klassenprogrammierung mit COM-Add-In vereinfachen","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/vg08.met.vgwort.de\/na\/2685e24690c34f98a57fb19be4eb7cf6","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#articleImage"},"datePublished":"2024-08-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#webpage"},"articleSection":"2024, 4\/2024, Berichte und Reporting, VBA-Editor programmieren"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/#listItem","name":"2024"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/#listItem","position":2,"name":"2024","item":"https:\/\/vbentwickler.de\/category\/2024\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/4\/2024\/#listItem","name":"4\/2024"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/4\/2024\/#listItem","position":3,"name":"4\/2024","item":"https:\/\/vbentwickler.de\/category\/2024\/4\/2024\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#listItem","name":"Klassenprogrammierung mit COM-Add-In vereinfachen"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/#listItem","name":"2024"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#listItem","position":4,"name":"Klassenprogrammierung mit COM-Add-In vereinfachen","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/4\/2024\/#listItem","name":"4\/2024"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#webpage","url":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/","name":"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler","description":".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2024-08-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler","og:description":".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.","og:url":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2024-08-14T14:44:35+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"Klassenprogrammierung mit COM-Add-In vereinfachen - Visual Basic Entwickler","twitter:description":".NET bietet sehr viele Steuer-elemente. Viel mehr als beispielsweise Microsoft Access. Und auch wenn man unter Access mit den eingebauten Steuerelementen die meisten Aufgaben im Bereich einer Datenbanksoftware erledigen kann, w\u00fcnschen sich viele Entwickler, auch einmal andere Steuer-elemente nutzen zu k\u00f6nnen. Wir untersuchen in diesem Artikel, ob und wie wir .NET-Steuerelemente unter Access einbinden und in Formularen anzeigen k\u00f6nnen.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000433","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2024-08-14 12:46:33","updated":"2026-05-16 09:13:39","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2024\/\" title=\"2024\">2024<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2024\/4\/2024\/\" title=\"4\/2024\">4\/2024<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tKlassenprogrammierung mit COM-Add-In vereinfachen\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2024","link":"https:\/\/vbentwickler.de\/category\/2024\/"},{"label":"4\/2024","link":"https:\/\/vbentwickler.de\/category\/2024\/4\/2024\/"},{"label":"Klassenprogrammierung mit COM-Add-In vereinfachen","link":"https:\/\/vbentwickler.de\/Klassenprogrammierung_mit_COMAddIn_vereinfachen\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000433"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000433\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000433"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}