{"id":55000169,"date":"2013-06-01T00:00:00","date_gmt":"2020-01-24T15:58:39","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=169"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Early_Binding_und_Late_Binding","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html","title":{"rendered":"Early Binding und Late Binding"},"content":{"rendered":"<p class='introduction'>Wenn Sie per VBA mit Objekten wie Word, Excel, Outlook interagieren oder auf die Elemente externe Bibliotheken zugreifen m&ouml;chten, die Objekte, Eigenschaften, Methoden und Ereignisse bereitstellen, k&ouml;nnen Sie dies auf zwei Arten erledigen: mit Early Binding oder mit Late Binding. Dieser Artikel erkl&auml;rt die Vor- und Nachteile dieser beiden Vorgehensweisen anhand des Zugriffs auf eine Excel-Tabelle.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1209_EarlyUndLateBinding.mdb<\/b>.<\/p>\n<h2>Beispiel<\/h2>\n<p>Das Beispiel f&uuml;r diesen Artikel ist einfach: Wir wollen einfach nur eine Excel-Instanz erstellen, ein neues Dokument anlegen und in der ersten Zelle der ersten Tabellen des Dokuments einen Wert eintragen. Dies erledigen auf zwei Arten: mit Early Binding und mit Late Binding. Beides bezieht sich auf die Art, wie Sie die Excel-Instanz deklarieren instanzieren und die im VBA-Code verwendeten Objekte deklarieren.<\/p>\n<h2>Early Binding<\/h2>\n<p>Beim Early Binding f&uuml;gen Sie dem VBA-Projekt der Datenbank-Datei einen Verweis auf die Bibliothek <b>Microsoft Excel x.0 Object Library <\/b>hinzu. Dazu &ouml;ffnen Sie den VBA-Editor (zum Beispiel mit <b>Alt + F11<\/b>), bet&auml;tigen den Men&uuml;befehl <b>Extras|Verweise <\/b>und finden dann den <b>Verweise<\/b>-Dialog vor. Dort finden Sie, wenn Sie Office beziehungsweise Excel installiert haben, einen entsprechenden Eintrag in der Liste der verf&uuml;gbaren Verweise vor und markieren diesen (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_169_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_169_001.png\" alt=\"Hinzuf&uuml;gen eines Verweises auf die Excel-Bibliothek\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Hinzuf&uuml;gen eines Verweises auf die Excel-Bibliothek<\/p>\n<p>Damit teilen Sie dem VBA-Editor mit, dass Sie die  in dieser Bibliothek definierten Objekte, Eigenschaften, Methoden und Ereignisse verf&uuml;gbar machen wollen. Im VBA-Editor macht sich das Hinzuf&uuml;gen dieses Verweises zum Beispiel dadurch bemerkbar, dass das Excel-Objekt und seine Elemente beim Deklarieren verf&uuml;gbar sind.<\/p>\n<p>Dies probieren wir in einem neuen Standardmodul aus, das Sie mit dem Men&uuml;befehl <b>Einf&uuml;gen|Modul <\/b>anlegen &#8211; speichern Sie dieses unter dem Namen <b>mdlExcel<\/b>.<\/p>\n<p>Wenn Sie dort gleich oben eine Deklarationszeile wie die folgende Anlegen, bietet IntelliSense gleich das <b>Excel<\/b>-Objekt zur Auswahl an (siehe Bild 2):<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_169_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_169_002.png\" alt=\"Beim Early Binding stehen die Elemente der referenzierten Bibliothek per IntelliSense zur Auswahl bereit\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Beim Early Binding stehen die Elemente der referenzierten Bibliothek per IntelliSense zur Auswahl bereit<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objExcel<span style=\"color:blue;\"> As <\/span>Excel.Application<\/pre>\n<p>Auch die &uuml;brigen Elemente dieser Bibliothek stehen nun zur Deklaration bereit. Doch damit nicht genug: Wenn Sie nun ein Objekt auf Basis der Klasse <b>Excel.Application <\/b>erstellen, k&ouml;nnen Sie auch noch per IntelliSense auf seine Eigenschaften und Methoden zugreifen (siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_169_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_169_003.png\" alt=\"Auch die Eigenschaften und Methoden der Objektvariablen werden per IntelliSense angezeigt.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Auch die Eigenschaften und Methoden der Objektvariablen werden per IntelliSense angezeigt.<\/p>\n<p>Wenn Sie das <b>Excel<\/b>-Objekt in einem Klassenmodul deklarieren, k&ouml;nnen Sie dort sogar noch das Schl&uuml;sselwort <b>WithEvents <\/b>mit angeben (siehe Klassenmodul <b>clsExcel<\/b> &#8211; anlegen mit <b>Einf&uuml;gen|Klassenmodul<\/b>, speichern unter <b>clsExcel<\/b>):<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>WithEvents objExcel<span style=\"color:blue;\"> As <\/span>Excel.Application<\/pre>\n<p>Sie k&ouml;nnen dann, genau wie bei den Ereignissen von Formularen oder den darin enthaltenen Steuerelementen, Ereignisprozeduren definieren, die bei bestimmten Ereignissen des entsprechenden Objekts ausgel&ouml;st werden.<\/p>\n<p>Nur gibt es in diesem Fall kein Eigenschaftsfenster, mit dem Sie den Wert der Ereigniseigenschaft auf <b>[Ereignisprozedur] <\/b>festlegen und dann per Mausklick auf die Schaltfl&auml;che mit den drei Punkten die entsprechende Ereignisprozedur anlegen. Stattdessen erledigen Sie dies, indem Sie im linken Kombinationsfeld des Code-Fensters des entsprechenden Klassenmoduls das Objekt ausw&auml;hlen (das zwingend mit dem Schl&uuml;sselwort <b>WithEvents <\/b>deklariert sein muss) und dann im rechten Fenster das zu implementierende Ereignis selektieren (siehe Bild 4).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_169_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_169_004.png\" alt=\"Einsatz von Ereignissen eines mit WithEvents deklarierten Objekts\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Einsatz von Ereignissen eines mit WithEvents deklarierten Objekts<\/p>\n<p>Schlie&szlig;lich bietet der Einsatz einer per Early Binding referenzierten Bibliothek f&uuml;r viele Einsatzf&auml;lle Konstanten an, welche die eigentlich als Parameter zu verwendenden Zahlen besser lesbar machen.<\/p>\n<p>Ein Beispiel ist das Format, unter dem ein frisch erstelltes Excel-Workbook gespeichert werden soll. In den folgenden Zeilen finden Sie die <b>SaveAs<\/b>-Methode des aktuellen Workbooks, die als zweiten und letzten Parameter die Konstante <b>xlExcel7 <\/b>verwendet:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> objExcel = <span style=\"color:blue;\">New<\/span> Excel.Application\r\n<span style=\"color:blue;\">With<\/span> objExcel\r\n     .Workbooks.Add\r\n     .ActiveCell.Value = \"A1\"\r\n     .ActiveWorkbook.SaveAs CurrentProject.Path _\r\n          & \"\\test.xls\", xlExcel7\r\n     .Visible = <span style=\"color:blue;\">True<\/span>\r\nEnd <span style=\"color:blue;\">With<\/span><\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000169\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000169?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000169\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"d2dbbab5df\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie per VBA mit Objekten wie Word, Excel, Outlook interagieren oder auf die Elemente externe Bibliotheken zugreifen m&ouml;chten, die Objekte, Eigenschaften, Methoden und Ereignisse bereitstellen, k&ouml;nnen Sie dies auf zwei Arten erledigen: mit Early Binding oder mit Late Binding. Dieser Artikel erkl&auml;rt die Vor- und Nachteile dieser beiden Vorgehensweisen anhand des Zugriffs auf eine Excel-Tabelle.<\/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":[662012,66092012,44000011],"tags":[],"class_list":["post-55000169","post","type-post","status-publish","format-standard","hentry","category-662012","category-66092012","category-VBAGrundlagen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Early Binding und Late Binding - Access [basics]<\/title>\n<meta name=\"description\" content=\"Wenn Sie per VBA mit Objekten wie Word, Excel, Outlook interagieren oder auf die Elemente externe Bibliotheken zugreifen m\u00f6chten, die Objekte, Eigenschaften, Methoden und Ereignisse bereitstellen, k\u00f6nnen Sie dies auf zwei Arten erledigen: mit Early Binding oder mit Late Binding. Dieser Artikel erkl\u00e4rt die Vor- und Nachteile dieser beiden Vorgehensweisen anhand des Zugriffs auf eine Excel-Tabelle.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Early Binding und Late Binding - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Wenn Sie per VBA mit Objekten wie Word, Excel, Outlook interagieren oder auf die Elemente externe Bibliotheken zugreifen m\u00f6chten, die Objekte, Eigenschaften, Methoden und Ereignisse bereitstellen, k\u00f6nnen Sie dies auf zwei Arten erledigen: mit Early Binding oder mit Late Binding. Dieser Artikel erkl\u00e4rt die Vor- und Nachteile dieser beiden Vorgehensweisen anhand des Zugriffs auf eine Excel-Tabelle.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_169_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"10\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_169_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html\",\"name\":\"Early Binding und Late Binding - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:39+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Wenn Sie per VBA mit Objekten wie Word, Excel, Outlook interagieren oder auf die Elemente externe Bibliotheken zugreifen m\\u00f6chten, die Objekte, Eigenschaften, Methoden und Ereignisse bereitstellen, k\\u00f6nnen Sie dies auf zwei Arten erledigen: mit Early Binding oder mit Late Binding. Dieser Artikel erkl\\u00e4rt die Vor- und Nachteile dieser beiden Vorgehensweisen anhand des Zugriffs auf eine Excel-Tabelle.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Early_Binding_und_Late_Binding.html\",\"name\":\"Early Binding und Late Binding\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000169"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000169\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}