{"id":55001352,"date":"2022-02-01T00:00:00","date_gmt":"2022-01-31T15:18:23","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1352"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Module_und_Co_im_Griff_mit_VBComponent","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/","title":{"rendered":"Module und Co. im Griff mit VBComponent"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Bei der Programmierung des VBA-Editors per VBA ist eine der Kernkomponenten das Element VBComponent. Wir k&ouml;nnen diese mit der Auflistung VBComponents durchlaufen oder direkt &uuml;ber den Namen der Komponente oder den Index darauf zugreifen. Danach ergeben sich verschiedene M&ouml;glichkeiten, die erst mit dem Zugriff auf das CodeModule des VBComponent-Elements interessant werden. Bis dahin schauen wir uns aber noch an, welche M&ouml;glichkeiten das VBComponent-Element bietet. <\/b><\/p>\n<h2>Vorbereitung<\/h2>\n<p>Um die Elemente der Klasse <b>VBE<\/b> nutzen zu k&ouml;nnen, ben&ouml;tigen Sie einen Verweis auf die Bibliothek <b>Microsoft Visual Basic for Applications Extensibility 5.3 Object Library<\/b>, den Sie im <b>Verweise<\/b>-Dialog des VBA-Editors hinzuf&uuml;gen k&ouml;nnen (Men&uuml;eintrag <b>Extras|Verweise<\/b>).<\/p>\n<h2>Elemente der VBComponent-Klasse<\/h2>\n<p>Die <b>VBComponent<\/b>-Klasse und ihre Eigenschaften, Methoden und Auflistungen k&ouml;nnen Sie im Objektkatalog im &Uuml;berblick ansehen, wenn Sie dort nach <b>VBComponent <\/b>suchen (siehe Bild 1). Die Klasse bietet folgende Elemente:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1352_001.png\" alt=\"Das VBComponent-Element im Objektkatalog\" width=\"499,5589\" height=\"513,0345\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Das VBComponent-Element im Objektkatalog<\/span><\/b><\/p>\n<ul>\n<li><b>Activate<\/b>: Aktiviert das <b>VBComponent<\/b>-Objekt und zeigt es in seinem Fenster an.<\/li>\n<li><b>CodeModule<\/b>: Liefert einen Verweis auf das <b>CodeModule<\/b>-Element des <b>VBComponent<\/b>-Objekts.<\/li>\n<li><b>Collection<\/b>: Liefert Zugriff auf die Collection mit diesem <b>VBComponent<\/b>-Objekt und allen anderen, die in der &uuml;bergeordneten <b>VBComponents<\/b>-Auflistung enthalten sind.<\/li>\n<li><b>Designer<\/b>: Liefert einen Verweis auf den Designer des <b>VBComponent<\/b>-Objekts. Dieser liefert bei den &uuml;blicherweise unter Access verwendeten <b>VBComponent<\/b>-Elementen immer <b>Nothing<\/b>. Sie k&ouml;nnen ihn nutzen, wenn Sie beispielsweise <b>UserForm<\/b>-Objekte programmieren wollen, was nicht Thema dieses Beitrags ist und normalerweise unter Access nicht geschieht.<\/li>\n<li><b>DesignerID<\/b>: Siehe Eigenschaft <b>Designer<\/b>.<\/li>\n<li><b>DesignerWindow<\/b>: Siehe Eigenschaft <b>Designer<\/b>.<\/li>\n<li><b>Export<\/b>: Exportiert das Objekt in eine Textdatei.<\/li>\n<li><b>HasOpenDesigner<\/b>: Siehe <b>Designer<\/b>. Liefert daher f&uuml;r die standardm&auml;&szlig;ig verwendeten Access-Module immer den Wert <b>False<\/b>.<\/li>\n<li><b>Name<\/b>: Liefert den Namen des <b>VBComponent<\/b>-Objekts.<\/li>\n<li><b>Properties<\/b>: Liefert eine Auflistung der <b>Property<\/b>-Eigenschaften des <b>VBComponent<\/b>-Elements.<\/li>\n<li><b>Saved<\/b>: Gibt an, ob es ungespeicherte &Auml;nderungen an dem <b>VBComponent<\/b>-Objekt gibt.<\/li>\n<li><b>Type<\/b>: Gibt den Typ des <b>VBComponent<\/b>-Objekts zur&uuml;ck.<\/li>\n<li><b>VBE<\/b>: Verweis auf das VBA-Editor-Objekt des <b>VBComponent<\/b>-Objekts<\/li>\n<\/ul>\n<h2>VBComponent-Objekte durchlaufen<\/h2>\n<p>Die folgende Prozedur referenziert mit der Variablen <b>objVBProject <\/b>das aktuelle VBA-Projekt und durchl&auml;uft dann in einer <b>For Each<\/b>-Schleife die Elemente der Auflistung <b>VBComponents<\/b>. Dabei speichert sie den Verweis auf das jeweils aktuelle Objekt in der Variablen <b>objVBComponent<\/b>. Damit gibt die Prozedur den Namen des <b>VBComponent<\/b>-Objekts aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentsDurchlaufen()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     For Each objVBComponent In objVBProject.VBComponents\r\n         <span style=\"color:blue;\">Debug.Print<\/span> objVBComponent.Name\r\n     <span style=\"color:blue;\">Next<\/span> objVBComponent\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das Ergebnis entspricht den Elementen, die Sie in den drei Ordnern <b>Microsoft Access Klassenobjekte<\/b>, <b>Module <\/b>und <b>Klassenmodule<\/b> des Projektexplorers sehen, zum Beispiel:<\/p>\n<pre>mdlVBAProjektPerVBAReferenzieren\r\nmdlVBProject\r\nmdlVBE\r\nForm_frmBeispiele\r\nclsBeispiel\r\nmdlVBComponent<\/pre>\n<h2>VBComponent-Objekte gezielt referenzieren<\/h2>\n<p>Wenn Sie wissen, auf welches <b>VBComponent<\/b>-Objekt Sie zugreifen wollen, beispielsweise um sein <b>Code-Module<\/b>-Objekt zu bearbeiten, k&ouml;nnen Sie dies auch &uuml;ber den Index oder den Namen erledigen. Der Index ist 1-basiert:<\/p>\n<pre>  VBE.ActiveVBProject.VBComponents(1).Name\r\nmdlVBAProjektPerVBAReferenzieren<\/pre>\n<p>Das Referenzieren per Name geht so &#8211; hier mit Ausgabe des Wertes der Eigenschaft <b>Saved<\/b>:<\/p>\n<pre>  VBE.ActiveVBProject.VBComponents(\"mdlVBE\").Saved\r\nWahr<\/pre>\n<h2>Neues VBComponent-Objekt hinzuf&uuml;gen<\/h2>\n<p>Um ein neues <b>VBComponent<\/b>-Objekt hinzuzuf&uuml;gen und somit ein Klassenmodul eines Formulars oder Berichts, ein Standardmodul oder ein alleinstehendes Klassenmodul, ben&ouml;tigen Sie die <b>Add<\/b>-Methode der <b>VBComponents<\/b>-Auflistung. Dieser &uuml;bergeben Sie lediglich den Typ der zu erstellenden Komponente (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1352_003.png\" alt=\"Anlegen eines neuen VBComponent-Elements\" width=\"649,559\" height=\"217,274\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Anlegen eines neuen VBComponent-Elements<\/span><\/b><\/p>\n<p>Das Ergebnis referenzieren wir beispielsweise mit der Variablen <b>objVBComponent <\/b>und bearbeiten dieses anschlie&szlig;end weiter. Dabei geben wir im folgenden Beispiel zun&auml;chst nur den Namen der Komponente an:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentNeu()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     <span style=\"color:blue;\">Set<\/span> objVBComponent = objVBProject.VBComponents. Add(vbext_ct_StdModule)\r\n     <span style=\"color:blue;\">With<\/span> objVBComponent\r\n         .Name = \"mdlNeu\"\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p>Als Ergebnis erhalten wir nach dem Ausf&uuml;hren dieser Prozedur ein neues, leeres Codefenster mit einem Standardmodul namens <b>mdlNeu<\/b>.<\/p>\n<h2>VBComponent-Element l&ouml;schen<\/h2>\n<p>Wenn Sie ein Modul l&ouml;schen wollen, referenzieren Sie zun&auml;chst das entsprechende <b>VBComponent<\/b>-Element und l&ouml;schen es dann mit der <b>Remove<\/b>-Methode der <b>VBComponents<\/b>-Auflistung:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentLoeschen()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     <span style=\"color:blue;\">Set<\/span> objVBComponent =  objVBProject.VBComponents(\"mdlNeu\")\r\n     objVBProject.VBComponents.Remove objVBComponent\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>VBComponent-Element importieren<\/h2>\n<p>Mit der <b>Import<\/b>-Methode der <b>VBComponents<\/b>-Auflistung k&ouml;nnen Sie zuvor exportierte oder auch extern erstellte Module importieren. Beim Erstellen wird das <b>VBComponent<\/b>-Element unter dem Namen angelegt, der in der zu importierenden Datei mit dem Attribut <b>VB_Name <\/b>festgelegt ist. Ist dieses Attribut nicht vorhanden, verwendet die Methode einen generischen Namen wie <b>Modul1<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentImportieren()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     objVBProject.VBComponents.Import CurrentProject.Path  & \"\\Neu.txt\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Aktivieren eines VBComponent-Objekts<\/h2>\n<p>Um ein <b>VBComponent<\/b>-Objekt zu aktivieren, referenzieren Sie es und rufen seine Methode <b>Activate <\/b>auf &#8211; beispielsweise wie folgt vom Direktbereich des VBA-Editors aus:<\/p>\n<pre>VBE.ActiveVBProject.VBComponents(\"mdlVBE\").Activate<\/pre>\n<p>Dies zeigt das <b>VBComponent<\/b>-Objekt in seinem Fenster an.<\/p>\n<h2>Auf das CodeModule-Objekt zugreifen<\/h2>\n<p>Das <b>CodeModule<\/b>-Objekt ist der Weg, um vom <b>VBComponent<\/b>-Objekt auf den Code zuzugreifen. Dazu referenzieren wir das <b>CodeModule<\/b>-Objekt beispielsweise wie folgt und geben dann die Anzahl seiner Codezeilen aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>CodeModuleZeilenanzahlAusgeben()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Dim <\/span>objCodeModule<span style=\"color:blue;\"> As <\/span>CodeModule\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     <span style=\"color:blue;\">Set<\/span> objVBComponent =  objVBProject.VBComponents(\"mdlVBE\")\r\n     <span style=\"color:blue;\">Set<\/span> objCodeModule = objVBComponent.CodeModule\r\n     <span style=\"color:blue;\">Debug.Print<\/span> objCodeModule.CountOfLines\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Alles &uuml;ber die <b>CodeModule<\/b>-Klasse erfahren Sie im Beitrag <b>VBA-Code im Griff mit der CodeModule-Klasse <\/b>(<b>www.access-im-unternehmen.de\/1353<\/b>).<\/p>\n<h2>Ein VBComponent-Objekt exportieren<\/h2>\n<p>Mit der <b>Export<\/b>-Methode des <b>VBComponent<\/b>-Objekts k&ouml;nnen Sie den Inhalt des Objekts in eine Textdatei schreiben. Die folgende Anweisung schreibt das <b>VBComponent<\/b>-Objekt <b>mdlVBE <\/b>in die Datei <b>Export.txt <\/b>in das gleiche Verzeichnis, in dem sich auch die Datenbankdatei befindet:<\/p>\n<pre>VBE.ActiveVBProject.VBComponents(\"mdlVBE\").Export CurrentProject.Path & \"\\Export.txt\"<\/pre>\n<p>Das Ergebnis sehen Sie in Bild 3. Hier finden Sie neben dem eigentlichen Code des Objekts noch einige weitere Elemente und Attribute vor.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_01\/pic_1352_002.png\" alt=\"Ein mit der Export-Methode exportiertes VBComponent-Objekt\" width=\"499,5589\" height=\"374,4593\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Ein mit der Export-Methode exportiertes VBComponent-Objekt<\/span><\/b><\/p>\n<h2>Properties-Auflistung ansehen<\/h2>\n<p>Die <b>Properties<\/b>-Auflistung eines <b>VBComponent<\/b>-Objekts enth&auml;lt standardm&auml;&szlig;ig nur die Eigenschaft <b>Name<\/b>. Sollten doch mehr Eigenschaften in dieser Auflistung vorhanden sein, k&ouml;nnen Sie diese wie folgt ausgeben. Wichtig ist, dass Sie die Variable <b>objProperty <\/b>als Element der Klasse <b>VBIDE <\/b>deklarieren, weil sonst eine andere <b>Property<\/b>-Klasse verwendet wird, was zu einem Laufzeitfehler f&uuml;hrt (<b>Typen unvertr&auml;glich<\/b>):<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentProperties()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Dim <\/span>objProperty<span style=\"color:blue;\"> As <\/span>VBIDE.Property\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     <span style=\"color:blue;\">Set<\/span> objVBComponent =  objVBProject.VBComponents(\"mdlVBE\")\r\n     For Each objProperty In objVBComponent.Properties\r\n         <span style=\"color:blue;\">Debug.Print<\/span> objProperty.Name\r\n     <span style=\"color:blue;\">Next<\/span> objProperty\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Pr&uuml;fen, ob das VBComponent-Element gespeichert ist<\/h2>\n<p>Mit der <b>Saved<\/b>-Eigenschaft k&ouml;nnen Sie pr&uuml;fen, ob das <b>VBComponent<\/b>-Element seit der letzten &Auml;nderung gespeichert wurde oder ob ungespeicherte &Auml;nderungen vorliegen. Liegen noch &Auml;nderungen vor, liefert diese Eigenschaft den Wert <b>False<\/b>. Wenn Sie den Beitrag <b>Zugriff auf VBA-Projekte per VBProject <\/b>(<b>www.access-im-unternehmen.de\/1351<\/b>) gelesen haben, wissen Sie, dass auch die <b>VBProject<\/b>-Klasse diese Eigenschaft besitzt.<\/p>\n<p>Wenn Sie ein COM-Add-In programmieren wollen, das pr&uuml;ft, ob Module bereits gespeichert wurden, k&ouml;nnen Sie also zun&auml;chst mit der <b>Saved<\/b>-Eigenschaft des <b>VBProject<\/b>-Objekts pr&uuml;fen, ob &uuml;berhaupt ungespeicherte &Auml;nderungen vorliegen und diese dann gegebenenfalls mit der <b>Saved<\/b>-Eigenschaft der enthaltenen <b>VBComponent<\/b>-Objekte detaillierter untersuchen &#8211; beispielsweise, um den aktuellen Stand nicht gespeicherter Elemente sicherheitshalber in Textdateien zu sichern. So ist der Benutzer gesch&uuml;tzt, wenn er einmal versehentlich die Anwendung schlie&szlig;t, ohne das Speichern noch offener &Auml;nderungen zu best&auml;tigen.<\/p>\n<h2>Typ von VBComponent-Objekten untersuchen<\/h2>\n<p>Die folgende Prozedur gibt den Wert der Eigenschaft <b>Typ <\/b>von <b>VBComponent<\/b>-Elementen aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentTyp()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     For Each objVBComponent In objVBProject.VBComponents\r\n         <span style=\"color:blue;\">Debug.Print<\/span> objVBComponent.Name,  objVBComponent.Type\r\n     <span style=\"color:blue;\">Next<\/span> objVBComponent\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das Ergebnis lautet zum Beispiel:<\/p>\n<pre>mdlVBProject   1 \r\nmdlVBE         1 \r\nForm_frmBeispiele            100 \r\nclsBeispiel    2 \r\nmdlVBComponent               1 \r\nmdlCodeModule  1 \r\nmdlNeu         1<\/pre>\n<p>Die m&ouml;glichen Werte f&uuml;r die Eigenschaft <b>Type <\/b>lauten:<\/p>\n<ul>\n<li><b>vbext_ct_ActiveXDesigner <\/b>(<b>11<\/b>): Unter Access nicht verf&uuml;gbar.<\/li>\n<li><b>vbext_ct_ClassModule <\/b>(<b>2<\/b>): Klassenmodul<\/li>\n<li><b>vbext_ct_Document <\/b>(<b>100<\/b>): Klassenmodul von Formularen und Berichten<\/li>\n<li><b>vbext_ct_MSForm <\/b>(<b>3<\/b>): UserForm<\/li>\n<li><b>vbext_ct_StdModule <\/b>(<b>1<\/b>): Standardmodul<\/li>\n<\/ul>\n<p>Wir setzen das in Form einer <b>Select Case<\/b>-Anweisung in der Prozedur <b>VBComponentTyp <\/b>um und ermitteln jeweils die Bezeichnung des Typs, den wir in einer Variablen namens <b>strType <\/b>speichern und anschlie&szlig;end ausgeben:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VBComponentTyp()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBComponent\r\n     <span style=\"color:blue;\">Dim <\/span>strType<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = VBE.ActiveVBProject\r\n     For Each objVBComponent In objVBProject.VBComponents\r\n         Select Case objVBComponent.Type\r\n             <span style=\"color:blue;\">Case <\/span>vbext_ct_ActiveXDesigner\r\n                 strType = \"ActiveXDesigner\"\r\n             <span style=\"color:blue;\">Case <\/span>vbext_ct_ClassModule\r\n                 strType = \"ClassModule\"\r\n             <span style=\"color:blue;\">Case <\/span>vbext_ct_Document\r\n                 strType = \"Document\"\r\n             <span style=\"color:blue;\">Case <\/span>vbext_ct_MSForm\r\n                 strType = \"MSForm\"\r\n             <span style=\"color:blue;\">Case <\/span>vbext_ct_StdModule\r\n                 strType = \"StrModule\"\r\n         <span style=\"color:blue;\">End Select<\/span>\r\n         <span style=\"color:blue;\">Debug.Print<\/span> objVBComponent.Name, strType\r\n     <span style=\"color:blue;\">Next<\/span> objVBComponent\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit erhalten wir schon ein aussagekr&auml;ftigeres Ergebnis als mit den Zahlenwerten aus der vorherigen Version der Prozedur.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die <b>VBComponent<\/b>-Klasse ist der Startpunkt zum Editieren von VBA-Modulen &uuml;ber das <b>CodeModule<\/b>-Objekt des jeweiligen Moduls. Es bietet jedoch auch einige eigene interessante Eigenschaften und Methoden, die zum Beispiel in Zusammenhang mit dem Sichern von ungespeicherten &Auml;nderungen im Code zusammenh&auml;ngen.<\/p>\n<p>Die n&auml;chste wichtige Klasse <b>CodeModule<\/b>, die Sie hier schon ansatzweise kennengelernt haben, beschreiben wir in einem weiteren Beitrag namens <b>VBA-Code im Griff mit der CodeModule-Klasse <\/b>(<b>www.access-im-unternehmen.de\/1353<\/b>).<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>VBAEditorProgrammieren.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/74311CE0-C30B-47B1-BBFA-975F697A233D\/aiu_1352.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei der Programmierung des VBA-Editors per VBA ist eine der Kernkomponenten das Element VBComponent. Wir k&ouml;nnen diese mit der Auflistung VBComponents durchlaufen oder direkt &uuml;ber den Namen der Komponente oder den Index darauf zugreifen. Danach ergeben sich verschiedene M&ouml;glichkeiten, die erst mit dem Zugriff auf das CodeModule des VBComponent-Elements interessant werden. Bis dahin schauen wir uns aber noch an, welche M&ouml;glichkeiten das VBComponent-Element bietet. <\/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":[66012022,662022,44000025],"tags":[],"class_list":["post-55001352","post","type-post","status-publish","format-standard","hentry","category-66012022","category-662022","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Module und Co. im Griff mit VBComponent - 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\/Module_und_Co_im_Griff_mit_VBComponent\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Module und Co. im Griff mit VBComponent\" \/>\n<meta property=\"og:description\" content=\"Bei der Programmierung des VBA-Editors per VBA ist eine der Kernkomponenten das Element VBComponent. Wir k&ouml;nnen diese mit der Auflistung VBComponents durchlaufen oder direkt &uuml;ber den Namen der Komponente oder den Index darauf zugreifen. Danach ergeben sich verschiedene M&ouml;glichkeiten, die erst mit dem Zugriff auf das CodeModule des VBComponent-Elements interessant werden. Bis dahin schauen wir uns aber noch an, welche M&ouml;glichkeiten das VBComponent-Element bietet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-31T15:18:23+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd\" \/>\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=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Module und Co. im Griff mit VBComponent\",\"datePublished\":\"2022-01-31T15:18:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/\"},\"wordCount\":1214,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd\",\"articleSection\":[\"1\\\/2022\",\"2022\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/\",\"name\":\"Module und Co. im Griff mit VBComponent - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd\",\"datePublished\":\"2022-01-31T15:18:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Module_und_Co_im_Griff_mit_VBComponent\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Module und Co. im Griff mit VBComponent\"}]},{\"@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":"Module und Co. im Griff mit VBComponent - 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\/Module_und_Co_im_Griff_mit_VBComponent\/","og_locale":"de_DE","og_type":"article","og_title":"Module und Co. im Griff mit VBComponent","og_description":"Bei der Programmierung des VBA-Editors per VBA ist eine der Kernkomponenten das Element VBComponent. Wir k&ouml;nnen diese mit der Auflistung VBComponents durchlaufen oder direkt &uuml;ber den Namen der Komponente oder den Index darauf zugreifen. Danach ergeben sich verschiedene M&ouml;glichkeiten, die erst mit dem Zugriff auf das CodeModule des VBComponent-Elements interessant werden. Bis dahin schauen wir uns aber noch an, welche M&ouml;glichkeiten das VBComponent-Element bietet.","og_url":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/","og_site_name":"Access im Unternehmen","article_published_time":"2022-01-31T15:18:23+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Module und Co. im Griff mit VBComponent","datePublished":"2022-01-31T15:18:23+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/"},"wordCount":1214,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd","articleSection":["1\/2022","2022","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/","url":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/","name":"Module und Co. im Griff mit VBComponent - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd","datePublished":"2022-01-31T15:18:23+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/e6eef8d2d5fd45fd9cb5c0b3ebebbfbd"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Module_und_Co_im_Griff_mit_VBComponent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Module und Co. im Griff mit VBComponent"}]},{"@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\/55001352","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=55001352"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001352\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}