{"id":55001092,"date":"2017-08-01T00:00:00","date_gmt":"2020-05-13T21:25:59","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1092"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"AccessAddIn_mit_VSTO","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/","title":{"rendered":"Access-Add-In mit VSTO"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Access-Add-Ins k&ouml;nnen Sie mit Access selbst erstellen oder aber auch mit Visual Studio, zum Beispiel in der kostenlosen Visual Studio 2015 Community Edition. Dieser Beitrag zeigt, wie Sie ein Access-Add-In mit Visual Studio erstellen und was dabei zu beachten ist. Dabei legen wir vor allem ein Augenmerk darauf, wie Sie dem Fehlen einer Vorlage zum Erstellen von Access-Add-Ins begegnen und ein Add-In f&uuml;r eine andere Office-Anwendung nutzen, um ein Access-Add-In zu programmieren.<\/b><\/p>\n<h2>Voraussetzungen<\/h2>\n<p>Die erste Voraussetzung ist das Vorhandensein von <b>Visual Studio Community Edition 2015<\/b>, welches Sie nach Eingabe des Namens als Suchbegriff bei Google schnell finden sollten. Dieses kommt aber in der Regel nicht direkt mit den Office Developer Tools. Diese finden Sie ebenfalls am besten, wenn Sie bei Google die Suchbegriffe Office Developer Tools eingeben. Ein guter Startpunkt ist zum Zeitpunkt der Ver&ouml;ffentlichung dieses Beitrags aber auch diese Adresse:<\/p>\n<pre>https:\/\/blogs.msdn.microsoft.com\/visualstudio\/2015\/11\/23\/latest-microsoft-office-developer-tools-for-visual-studio-2015\/<\/pre>\n<p>Sie m&uuml;ssen also zuerst Visual Studio 2015 Community Edition installieren und dann die aktuellsten Erweiterungen herunterladen. Danach sollten Sie, wenn Sie Visual Studio starten und ein neues Projekt anlegen, die Vorlagen wie in Bild 1 finden.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_001.png\" alt=\"Keine Vorlage f&uuml;r ein Access-Add-In\" width=\"649,559\" height=\"423,6913\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Keine Vorlage f&uuml;r ein Access-Add-In<\/span><\/b><\/p>\n<h2>Add-In f&uuml;r Access<\/h2>\n<p>Wer wei&szlig;, dass die Elemente in alphabetischer Reihenfolge aufgelistet werden, und sieht, dass <b>Excel 2013 und 2016 VSTO-Add-In <\/b>der erste Eintrag ist, erkennt schnell: Es gibt keine Vorlage f&uuml;r Add-Ins, die mit Access arbeiten. Aber das ist kein Problem: Wir starten einfach mit einem anderen Add-In-Typ, beispielsweise f&uuml;r Microsoft Excel, und passen das daraus generierte Projekt dann f&uuml;r den Einsatz in Access an.<\/p>\n<h2>Start mit Excel statt mit Access<\/h2>\n<p>Sie erstellen also zun&auml;chst ein neues Projekt auf Basis der Vorlage <b>Visual C# <\/b>(oder <b>Visual Basic<\/b>)<b>|Office\/SharePoint|VSTO-Add-Ins|Excel 2013 und 2016 VSTO-Add-In<\/b>. Geben Sie dabei den Projektnamen an, in unserem Beispiel schlicht <b>AccessAddIn<\/b>.<\/p>\n<p>Nach einem Klick auf <b>OK<\/b> erstellt Visual Studio das Projekt.<\/p>\n<h2>Add-In in Excel testen<\/h2>\n<p>Wir wollen das Add-In, das wir ja nun erstellt, aber noch nicht f&uuml;r den Einsatz in Access angepasst haben, zun&auml;chst einmal auf seine Tauglichkeit unter Excel testen. Dazu klicken Sie in Visual Studio einfach auf <b>F5 <\/b>und f&uuml;hren das Add-In so aus. Das Resultat ist ern&uuml;chternd, denn wir erhalten direkt eine Fehlermeldung wie in Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_002.png\" alt=\"Fehler beim Start des Excel-Add-Ins\" width=\"649,559\" height=\"288,0527\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Fehler beim Start des Excel-Add-Ins<\/span><\/b><\/p>\n<p>Um dieses erste Problem zu beheben, schlie&szlig;en Sie Excel und &ouml;ffnen es das n&auml;chste Mal als Administrator. Dazu geben Sie Excel in das Suchen-Feld von Windows ein, klicken mit der rechten Maustaste auf den Eintrag <b>Excel 2016 <\/b>und w&auml;hlen aus dem Kontextmen&uuml; den Eintrag <b>Als Administrator ausf&uuml;hren <\/b>aus (s. Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_003.png\" alt=\"Excel als Administrator starten\" width=\"274,8134\" height=\"322,3638\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Excel als Administrator starten<\/span><\/b><\/p>\n<p>Nach dem &ouml;ffnen von Excel und dem Erstellen oder Laden einer Datei &ouml;ffnen Sie &uuml;ber den Backstage-Bereich die Excel-Optionen und wechseln dort zum Bereich <b>Men&uuml;band anpassen<\/b>. Hier aktivieren Sie nun die Hauptregisterkarte <b>Entwicklertools <\/b>(s. Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_004.png\" alt=\"Entwicklertools aktivieren\" width=\"499,6607\" height=\"369,3505\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Entwicklertools aktivieren<\/span><\/b><\/p>\n<p>Dies f&uuml;gt dem Ribbon von Excel einen neuen Reiter namens Entwicklertools hinzu. In diesem finden Sie eine Schaltfl&auml;che namens <b>COM-Add-Ins<\/b>. Wenn Sie diese anklicken, &ouml;ffnet sich die Liste der aktuell aktiverten Add-Ins. Ganz oben sehen Sie bereits den Eintrag <b>Access-AddIn <\/b>f&uuml;r unser soeben erstelltes Add-In. Ganz unten sollten Sie den Eintrag <b>Visual Studio Tools for Office Design-Time Adaptor for Excel<\/b> sehen. Diesen Eintrag m&uuml;ssen Sie deaktivieren, um den Fehler beim Aufruf von <b>GetCustomUI() <\/b>zu beheben (s. Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_005.png\" alt=\"Fehler durch GetCustomUI beheben\" width=\"574,61\" height=\"313,1693\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Fehler durch GetCustomUI beheben<\/span><\/b><\/p>\n<p>Bevor wir uns nun an die Arbeit machen, das Add-In f&uuml;r den Einsatz mit Access umzur&uuml;sten, wollen wir zumindest noch eine Ribbon-Schaltfl&auml;che hinzuf&uuml;gen, welche ein Meldungsfenster anzeigt. Damit stellen wir sicher, dass das Add-In grunds&auml;tzlich funktioniert. Es w&auml;re schade, wenn wir nun erst die ganzen Schritte f&uuml;r die Anpassung als Access-Add-In durchf&uuml;hren und dann, wenn es nicht funktionieren sollte, nicht wissen, wo der Fehler zu suchen ist.<\/p>\n<p>Sobald Sie Excel nun schlie&szlig;en und erneut starten, erscheint die Fehlermeldung nicht mehr.<\/p>\n<h2>Ribbon hinzuf&uuml;gen<\/h2>\n<p>Nun wollen wir den Code zur Erstellung eines Ribbons zu unserem Add-In hinzuf&uuml;gen. Dazu erstellen Sie in Visual Studio eine neue Klasse, indem Sie den Kontextmen&uuml;-Eintrag des Projekts <b>AccessAddIn <\/b>aus dem Projektmappen-Explorer namens <b>Hinzuf&uuml;gen|Neues Element&#8230; <\/b>anklicken. Es erscheint der Dialog aus Bild 6, mit dem Sie ein Element des Typs <b>Men&uuml;band (Visueller Designer) <\/b>namens <b>AddInRibbon.cs <\/b>hinzuf&uuml;gen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_006.png\" alt=\"Hinzuf&uuml;gen eines Ribbons\" width=\"574,61\" height=\"304,4882\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Hinzuf&uuml;gen eines Ribbons<\/span><\/b><\/p>\n<p>Es erscheint die Ansicht aus Bild 7, mit der Sie die Ribbon-Steuerelemente aus der Toolbox an die gew&uuml;nschten Stellen im Ribbon einf&uuml;gen k&ouml;nnen. Nun bedarf es einiger Erl&auml;uterungen, was es mit dem Element <b>TabAddIns (Integriert) <\/b>auf sich hat. Eines steht jedoch fest: Durch das einfache Hinzuf&uuml;gen eines Ribbons &auml;ndert sich noch nichts, beim n&auml;chsten Debuggen\/Starten des Add-Ins per <b>F5 <\/b>&ouml;ffnet sich zwar Excel, aber es erscheinen keine zus&auml;tzlichen Elemente im Ribbon.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_007.png\" alt=\"Bearbeiten des Ribbbons\" width=\"574,61\" height=\"408,6462\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Bearbeiten des Ribbbons<\/span><\/b><\/p>\n<h2>Schaltfl&auml;che zum Ribbon hinzuf&uuml;gen<\/h2>\n<p>Wir f&uuml;gen nun zun&auml;chst eine Schaltfl&auml;che zum Ribbon hinzu, indem wir ein <b>Button<\/b>-Element aus der Toolbox in den Bereich <b>group1 <\/b>ziehen. Die Beschriftung beider Elemente, also der Gruppe und der Schaltfl&auml;che, passen wir nun an.<\/p>\n<p>Dazu klicken Sie auf das Element, in Bild 8 zum Beispiel auf das <b>Button<\/b>-Element, und stellen im Eigenschaften-Bereich die Eigenschaft <b>Label <\/b>auf den gew&uuml;nschten Wert ein, in diesem Fall <b>Test<\/b>. Im gleichen Zug k&ouml;nnen Sie die Eigenschaft <b>Name <\/b>auf den Wert <b>btnTest <\/b>&auml;ndern. F&uuml;r das <b>Group<\/b>-Element stellen Sie <b>Label <\/b>auf <b>Beispielgruppe <\/b>und <b>Name <\/b>auf <b>grpBeispiel <\/b>ein.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_008.png\" alt=\"Bezeichnung der Schaltfl&auml;che &auml;ndern\" width=\"574,61\" height=\"466,3986\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Bezeichnung der Schaltfl&auml;che &auml;ndern<\/span><\/b><\/p>\n<p>Nun f&uuml;gen wir noch eine Ereignisprozedur zur Schaltfl&auml;che hinzu. Das Klassenmodul mit dem Code f&uuml;r das Ribbon-Objekt &ouml;ffnen Sie, indem Sie aus dem Kontextmen&uuml; der Schaltfl&auml;che den Eintrag <b>Code anzeigen <\/b>ausw&auml;hlen (s. Bild 9). Dieser enth&auml;lt jedoch noch keine Ereignisprozedur f&uuml;r die Schaltfl&auml;che <b>btnTest<\/b>. Diese legen Sie am einfachsten an, indem Sie in der Entwurfsansicht doppelt auf die Schaltfl&auml;che klicken.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_009.png\" alt=\"Anzeigen der Ereignisprozedur der Schaltfl&auml;che\" width=\"424,7115\" height=\"306,4374\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Anzeigen der Ereignisprozedur der Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Sollte nun nicht automatisch die Klasse hinter dem Ribbon-Element erscheinen, k&ouml;nnen Sie diese wiederum &uuml;ber den Kontextmen&uuml;-Befehl <b>Code anzeigen <\/b>oder die Taste <b>F7 <\/b>&ouml;ffnen. Dieses Klassenmodul enth&auml;lt nun eine Methode namens <b>btnText_Click<\/b>. Wir wollen dieser ein einfaches Meldungsfenster hinzuf&uuml;gen, wozu zwei Schritte n&ouml;tig sind. Als Erstes f&uuml;gen Sie der Klasse oben mit der <b>using<\/b>-Anweisung einen Verweis auf das Namespace <b>System.Windows.Forms <\/b>hinzu:<\/p>\n<pre>using System.Windows.Forms;<\/pre>\n<p>Die C#-Methode f&uuml;llen wir dann mit einem einfachen Aufruf der <b>Show<\/b>-Methode der <b>MessageBox<\/b>-Klasse (s. Bild 10):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_010.png\" alt=\"Hinzuf&uuml;gen einer MessageBox zur Schaltfl&auml;che\" width=\"549,6265\" height=\"297,681\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Hinzuf&uuml;gen einer MessageBox zur Schaltfl&auml;che<\/span><\/b><\/p>\n<pre>private void btnTest_Click(object sender,  RibbonControlEventArgs e) {\r\n     MessageBox.Show(\"Schaltfl&auml;che  angeklickt.\");\r\n}<\/pre>\n<p>Wenn Sie nun das Add-In per <b>F5 <\/b>starten\/debuggen, wird Excel ge&ouml;ffnet, aber auf den ersten Blick ist kein neuer Eintrag zu erkennen. Dieser erscheint erst, wenn Sie nun auf den Tab <b>Add-Ins <\/b>klicken. Dort finden Sie dann neben der Gruppe <b>Benutzerdefinierte Symbolleisten <\/b>unsere selbst definierte Gruppe namens <b>Beispielgruppe <\/b>und die Schaltfl&auml;che <b>Test<\/b>. Klicken Sie diese an, taucht auch prompt die von uns programmierte Meldung auf (s. Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_011.png\" alt=\"Die neu hinzugef&uuml;gte Add-In-Schaltlf&auml;che\" width=\"549,6265\" height=\"334,3768\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Die neu hinzugef&uuml;gte Add-In-Schaltlf&auml;che<\/span><\/b><\/p>\n<h2>Wechsel zu Access<\/h2>\n<p>Nun gehen wir einen Schritt weiter und wollen das Add-In so anpassen, dass es nicht unter Excel, sondern unter Access ge&ouml;ffnet wird. Dazu sind einige &auml;nderungen n&ouml;tig, die wir teilweise im Text-Editor Ihrer Wahl durchf&uuml;hren m&uuml;ssen, weil die entsprechenden Dateien nicht in Visual Studio ge&ouml;ffnet werden k&ouml;nnen.<\/p>\n<h2>Schritt 1: Verweis auf die Access-Bibliothek<\/h2>\n<p><!--30percent--><\/p>\n<p>Die erste &auml;nderung ist das Hinzuf&uuml;gen eines Verweises auf die Access-Bibliothek. Dazu bet&auml;tigen Sie den Men&uuml;befehl <b>Projekt|Verweis hinzuf&uuml;gen&#8230;<\/b>, der den <b>Verweis-Manager <\/b>&ouml;ffnet. Aus unerfindlichen Gr&uuml;nden finden Sie den Verweis auf die Bibliothek <b>Microsoft Access x.0 Object Library <\/b>nicht wie gewohnt im Bereich <b>COM\/Typbibliotheken <\/b>(s. Bild 12).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_013.png\" alt=\"Der Verweis auf Microsoft Access 16.0 Object Library fehlt.\" width=\"649,559\" height=\"292,3867\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Der Verweis auf Microsoft Access 16.0 Object Library fehlt.<\/span><\/b><\/p>\n<p>Stattdessen m&uuml;ssen Sie auf den Bereich <b>Durchsuchen <\/b>wechseln und dort auf die Schaltfl&auml;che <b>Durchsuchen&#8230; <\/b>klicken. Hier navigieren Sie zur Datei <b>MSACC.OLB<\/b>, die sich unter Office 2016 beispielsweise in diesem Verzeichnis befindet: <b>C:\\Program Files (x86)\\Microsoft Office\\root\\Office16<\/b>. Nachdem Sie diese ausgew&auml;hlt haben, sieht der Dialog <b>Verweis-Manager <\/b>wie in Bild 13 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_014.png\" alt=\"Hinzuf&uuml;gen per Durchsuchen...\" width=\"649,559\" height=\"292,3867\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Hinzuf&uuml;gen per Durchsuchen&#8230;<\/span><\/b><\/p>\n<h2>Datei ThisAddIn.Designer.cs &auml;ndern<\/h2>\n<p>Eine wichtige Rolle spielt die Datei <b>ThisAddIn.Designer.cs<\/b>. Sie legt unter anderem fest, welche Anwendung als Host verwendet wird. Damit es sich dabei nicht mehr um Excel handelt, sondern um Access, sind einige &auml;nderungen n&ouml;tig. Die Datei finden Sie nicht direkt im Projektmappen-Explorer, sondern Sie m&uuml;ssen diese &uuml;ber den Windows Explorer per Doppelklick &ouml;ffnen oder diese einfach aus dem Windows Explorer in Visual Studio ziehen. Wir schauen uns die notwendigen &auml;nderungen von oben nach unten an. Die vorherige Version der Anweisungen haben wir jeweils auskommentiert (dies geschieht unter C# durch Voranstellen zweier Schr&auml;gstriche). Als Erstes &auml;ndern wir folgende Zeile, wobei einfach <b>Excel <\/b>durch <b>Access <\/b>ersetzt wird (ca. Zeile 28):<\/p>\n<pre>\/\/internal Microsoft.Office.Interop.Excel.Application Application;\r\ninternal Microsoft.Office.Interop.Access.Application Application;<\/pre>\n<p>Die zweite &auml;nderung folgt gleich ein paar Zeilen weiter unten. Hier wird <b>Excel.ApplicationFactory <\/b>einfach durch das allgemeine <b>Factory<\/b>-Objekt ersetzt (f&uuml;r Access gibt es kein <b>ApplicationFactory<\/b>-Objekt, ca. Zeile 33):<\/p>\n<pre>\/\/public ThisAddIn(global::Microsoft.Office.Tools.Excel.ApplicationFactory factory, global::System.IServiceProvider serviceProvider) : base(factory, serviceProvider, \"AddIn\", \"ThisAddIn\") {\r\npublic ThisAddIn(global::Microsoft.Office.Tools.Factory factory, global::System.IServiceProvider serviceProvider) : base(factory, serviceProvider, \"AddIn\", \"ThisAddIn\") {<\/pre>\n<p>In der Methode <b>Initialize<\/b> ersetzen wir wie folgt <b>Excel <\/b>durch <b>Access<\/b> (ca. Zeile 43):<\/p>\n<pre>\/\/this.Application = this.GetHostItem&lt;Microsoft.Office.Interop.Excel.Application&gt;(typeof(Microsoft.Office.Interop.Excel.Application), \"Application\");\r\nthis.Application = this.GetHostItem&lt;Microsoft.Office.Interop.Access.Application&gt;(typeof(Microsoft.Office.Interop.Access.Application), \"Application\");<\/pre>\n<p>Und es folgen noch zwei Ersetzungen der Factory. Die erste sieht so aus (ca. Zeile 184):<\/p>\n<pre>\/\/private static global::Microsoft.Office.Tools.Excel.ApplicationFactory _factory;\r\nprivate static global::Microsoft.Office.Tools.Factory _factory;<\/pre>\n<p>Die zweite betrifft diese Zeile (ca. Zeile 202):<\/p>\n<pre>\/\/internal static global::Microsoft.Office.Tools.Excel.ApplicationFactory Factory {\r\ninternal static global::Microsoft.Office.Tools.Factory Factory {<\/pre>\n<h2>Anweisungen in ThisAddIn.Designer.cs l&ouml;schen<\/h2>\n<p>Nun entfernen wir einige Anweisungen aus der gleichen Datei, welche die ordnungsgem&auml;&szlig;e Ausf&uuml;hrung des Add-Ins in Access verhindern. Damit Sie sich ungef&auml;hr an den Zeilennummern orientieren, kommentieren Sie die betroffenen Zeilen einfach durch Voranstellen von \/\/ aus. Die ersten beiden Zeilen finden Sie ab Zeile 20:<\/p>\n<pre>\/\/ internal Microsoft.Office.Tools.CustomTaskPaneCollection CustomTaskPanes;\r\n\/\/ internal Microsoft.Office.Tools.SmartTagCollection VstoSmartTags;<\/pre>\n<p>Zeile 126:<\/p>\n<pre>\/\/this.CustomTaskPanes.BeginInit();\r\n\/\/this.VstoSmartTags.BeginInit();<\/pre>\n<p>Zeile 134:<\/p>\n<pre>\/\/this.VstoSmartTags.EndInit();\r\n\/\/this.CustomTaskPanes.EndInit();<\/pre>\n<p>Zeile 144:<\/p>\n<pre>\/\/this.CustomTaskPanes = Globals.Factory.CreateCustomTaskPaneCollection(null, null, \"CustomTaskPanes\", \"CustomTaskPanes\", this);\r\n\/\/this.VstoSmartTags = Globals.Factory.CreateSmartTagCollection(null, null, \"VstoSmartTags\", \"VstoSmartTags\", this);<\/pre>\n<p>Zeile 163:<\/p>\n<pre>\/\/[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n\/\/[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll\", \"14.0.0.0\")]\r\n\/\/[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]\r\n\/\/protected override void OnShutdown() {\r\n\/\/    this.VstoSmartTags.Dispose();\r\n\/\/    this.CustomTaskPanes.Dispose();\r\n\/\/    base.OnShutdown();\r\n\/\/}<\/pre>\n<p>Damit sind die &auml;nderungen an dieser Datei abgeschlossen und Sie k&ouml;nnen diese speichern und schlie&szlig;en.<\/p>\n<h2>&auml;ndern der Datei AccessAddIn.csproj<\/h2>\n<p>Nun k&uuml;mmern wir uns um die <b>.csproj<\/b>-Datei. Diese &ouml;ffnen wir der Einfachheit halber mit einem externen Text-Editor. Hier nehmen wir unter anderem Einstellungen vor, die daf&uuml;r sorgen, dass beim Starten des Debuggens die richtigen Eintr&auml;ge in der Registry landen.<\/p>\n<p>Bei dieser Datei handelt es sich um eine XML-Datei. Das hei&szlig;t, dass wir Zeilen durch Voranstellen von <b><!-- <\/b>und Anf&uuml;gen von <b>--> <\/b>auskommentieren. Die erste &auml;nderung findet in Zeile 54 statt:<\/p>\n<pre>&lt;!--&lt;OfficeApplication&gt;Excel&lt;\/OfficeApplication&gt;--&gt; &lt;OfficeApplication&gt;Access&lt;\/OfficeApplication&gt;<\/pre>\n<p>Die n&auml;chste &auml;nderung f&uuml;hren Sie etwa in Zeile 265 aus:<\/p>\n<pre>&lt;!--&lt;ProjectProperties HostName=\"Excel\" HostPackage=\"{29A7B9D7-A7F1-4328-8EF0-6B2D1A56B2C1}\" OfficeVersion=\"15.0\" VstxVersion=\"4.0\" ApplicationType=\"Excel\" Language=\"cs\" TemplatesPath=\"\" DebugInfoExeName=\"#Software\\Microsoft\\Office\\16.0\\Excel\\InstallRoot\\Path#Excel.exe\" DebugInfoCommandLine=\"\/x\" AddItemTemplatesGuid=\"{51063C3A-E220-4D12-8922-BDA915ACD783}\" \/&gt;--&gt;<\/pre>\n<p>Hier &auml;ndern wir alle Vorkommen von <b>Excel <\/b>nach <b>Access <\/b>(an zwei Stellen). Au&szlig;erdem geben Sie als auszuf&uuml;hrende Datei <b>MSAccess.exe <\/b>statt <b>Excel.exe <\/b>an und &auml;ndern in der Verzeichnisangabe <b>&#8230;\\Excel\\&#8230; <\/b>in <b>&#8230;\\Access\\&#8230;<\/b> (insgesamt also vier &auml;nderungen). Gegebenenfalls m&uuml;ssen Sie auch noch die Version anpassen, hier auf <b>16.0 <\/b>f&uuml;r Access 2016 (f&uuml;r das Attribut <b>OfficeVersion <\/b>und im Pfad zur auszuf&uuml;hrenden Datei):<\/p>\n<pre>&lt;ProjectProperties HostName=\"Access\" HostPackage=\"{29A7B9D7-A7F1-4328-8EF0-6B2D1A56B2C1}\" OfficeVersion=\"16.0\" VstxVersion=\"4.0\" ApplicationType=\"Access\" Language=\"cs\" TemplatesPath=\"\" DebugInfoExeName=\"#Software\\Microsoft\\Office\\16.0\\Access\\InstallRoot\\Path#msaccess.exe\" DebugInfoCommandLine=\"\/x\" AddItemTemplatesGuid=\"{51063C3A-E220-4D12-8922-BDA915ACD783}\" \/&gt;<\/pre>\n<p>Sie k&ouml;nnten diese Angabe auch in den Properties des Objekts im Bereich <b>Debuggen <\/b>f&uuml;r die Eigenschaft <b>Externes Programm starten: <\/b>einstellen. Die letzte &auml;nderung betrifft die folgende Zeile (etwa 266). Hier ersetzen Sie wieder einfach <b>Excel <\/b>durch <b>Access<\/b>:<\/p>\n<pre>&lt;!--&lt;Host Name=\"Excel\" GeneratedCodeNamespace=\"AccessAddIn\" IconIndex=\"0\"&gt;--&gt;\r\n&lt;Host Name=\"Access\" GeneratedCodeNamespace=\"AccessAddIn\" IconIndex=\"0\"&gt;<\/pre>\n<p>Damit haben wir alle notwendigen &auml;nderungen durchgef&uuml;hrt und k&ouml;nnen die Anwendung erneut starten.<\/p>\n<h2>Versuch des Starts<\/h2>\n<p>Wenn wir nun das Add-In mit <b>F5 <\/b>debuggen\/starten, wird zwar Access ge&ouml;ffnet, aber unser Ribbon-Eintrag erscheint nicht. Das ist auch kein Wunder: Unter Access gibt es schlie&szlig;lich auch gar kein Tab-Element namens <b>Add-Ins<\/b>. Um zu pr&uuml;fen, ob unser Add-In &uuml;berhaupt aufgerufen wird,  f&uuml;gen wir nun erst einmal die Ausgabe einer Meldung beim Starten des Add-Ins hinzu.<\/p>\n<p>Dies erledigen Sie in Visual Studio, indem Sie das Modul <b>ThisAddIn.cs <\/b>&ouml;ffnen und die dort bereits vorhandene Ereignismethode <b>ThisAddIn_Startup <\/b>wie folgt erg&auml;nzen:<\/p>\n<pre>private void ThisAddIn_Startup(object sender, System.EventArgs e)\r\n{\r\n     MessageBox.Show(\"Startup\");\r\n}<\/pre>\n<p>Dies sollte beim n&auml;chsten Starten des Add-Ins von Visual Studio aus per <b>F5<\/b> dazu f&uuml;hren, dass die Meldung beim Start von Access angezeigt wird.<\/p>\n<h2>M&ouml;gliche Fehler<\/h2>\n<p>Wir schauen uns noch an, welche Fehler beim Starten des Add-ins auftreten k&ouml;nnten und k&uuml;mmern uns dann um die Anpassung des Ribbons.<\/p>\n<p>Den Fehler mit der Fehlermeldung aus Bild 14 kennen wir beispielsweise sehr gut, weil wir ihn eine Weile immer wieder gesehen haben, bis wir die richtige Kombination der Anpassungen des Excel-Add-Ins an Access gefunden haben. Tritt dieser Fehler bei Ihnen auf, haben Sie schlicht nicht alle der aufgef&uuml;hrten &auml;nderungen durchgef&uuml;hrt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_015.png\" alt=\"Fehler beim &ouml;ffnen des Add-Ins\" width=\"424,7115\" height=\"255,6045\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Fehler beim &ouml;ffnen des Add-Ins<\/span><\/b><\/p>\n<p>Das Gleiche ist der Fall, wenn Access nach dem Starten des Add-Ins einfach abst&uuml;rzt. Kontrollieren Sie dann noch einmal die Schritte und vergleichen sie gegebenenfalls mit dem Beispielprojekt. Wenn gar nichts geschieht, also auch nicht die weiter oben eingebaute Meldung erscheint, ist das Add-In m&ouml;glicherweise nicht korrekt registriert. <\/p>\n<p>Dies k&ouml;nnen Sie pr&uuml;fen, indem Sie die Windows Registry &ouml;ffnen, und zwar, indem Sie im Suchen-Fenster von Windows den Ausdruck <b>RegEdit <\/b>eingeben und die dann angezeigte App &ouml;ffnen. Hier navigieren Sie dann zum folgenden Element (s. Bild 15):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_016.png\" alt=\"Das Add-In in der Windows-Registry\" width=\"649,559\" height=\"351,1129\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 15: Das Add-In in der Windows-Registry<\/span><\/b><\/p>\n<pre>HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Office\\Access\\Addins\\AccessAddIn<\/pre>\n<p>Liegt dort kein Eintrag wie in der Abbildung vor, kontrollieren Sie nochmals die durchgef&uuml;hrten Schritte.<\/p>\n<p>Gegebenenfalls ist der Eintrag fast mit dem hier abgebildeten identisch &#8211; es kann n&auml;mlich sein, dass der Wert des Schl&uuml;ssels <b>LoadBehaviour <\/b>auf <b>2 <\/b>eingestellt ist. Dies wird automatisch von Access erledigt, wenn beim Laden eines Add-Ins ein Fehler auftritt. Durch die &auml;nderung auf diesen Wert wird das Add-In beim n&auml;chsten Start von Access nicht mehr ber&uuml;cksichtigt. Sie m&uuml;ssen den Wert dann manuell wieder auf <b>3 <\/b>einstellen. Vielleicht wollen Sie den Eintrag auch komplett neu erstellen &#8211; dann entfernen Sie den Eintrag mit der entsprechenden Bezeichnung (hier <b>AccessAddIn<\/b>) einfach und starten das Add-In von Visual Studio aus neu.<\/p>\n<h2>Ribbon an Access anpassen<\/h2>\n<p>Nun wollen wir uns um die Anzeige eines Ribbon-Eintrags f&uuml;r das Add-In k&uuml;mmern. Dies ist die g&auml;ngigste Weise, um ein Add-In von Access aus zu starten. Grunds&auml;tzlich haben wir zwei M&ouml;glichkeiten:<\/p>\n<ul>\n<li>Wir verwenden ein bestehendes Tab-Element und f&uuml;gen diesem eine neue Gruppe mit eigenen Elementen hinzu beziehungsweise f&uuml;gen einer bestehenden Gruppe neue Elemente hinzu.<\/li>\n<li>Wir erstellen ein neues Tab-Element.<\/li>\n<\/ul>\n<h2>Gruppe zu bestehendem Tab-Element hinzuf&uuml;gen<\/h2>\n<p>Als erstes Beispiel wollen wir dem Tab <b>Datenbanktools <\/b>eine neue Gruppe mit einer benutzerdefinierten Schaltfl&auml;che hinzuf&uuml;gen &#8211; diesmal auch gleich mit einem entsprechenden Icon. Dazu &ouml;ffnen Sie in Visual Studio das Element <b>AddInRibbons.cs <\/b>in der Entwurfsansicht und zeigen den Eigenschaften-Dialog an.<\/p>\n<p>Hier klappen Sie das Element <b>ControlId <\/b>auf und w&auml;hlen f&uuml;r <b>ControlIdType <\/b>den Wert <b>Office <\/b>aus. F&uuml;r <b>OfficeId <\/b>geben Sie dann die interne Bezeichnung des zu verwendenden <b>Tab<\/b>-Elements ein. Die eingebauten Tabs von Access haben folgende Bezeichnungen:<\/p>\n<ul>\n<li>Add-Ins: <b>TabAddIns<\/b><\/li>\n<li>Erstellen: <b>TabCreate<\/b><\/li>\n<li>Datenbanktools: <b>TabDatabaseTools<\/b><\/li>\n<li>Externe Daten: <b>TabExternalData<\/b><\/li>\n<li>Start: <b>TabHomeAccess<\/b><\/li>\n<li>Seitenansicht: <b>TabPrintPreviewAccess<\/b><\/li>\n<\/ul>\n<p>Wir wollen zuerst eine Schaltfl&auml;che zum Start-Tab von Access hinzuf&uuml;gen. Dazu geben Sie f&uuml;r die Eigenschaft <b>OfficeId<\/b> den Wert <b>TabHomeAccess <\/b>ein (s. Bild 16).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_018.png\" alt=\"Festlegen des Ziel-Tabs\" width=\"424,7115\" height=\"306,2394\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 16: Festlegen des Ziel-Tabs<\/span><\/b><\/p>\n<h2>Bild zur Ribbon-Schaltfl&auml;che hinzuf&uuml;gen<\/h2>\n<p>Danach k&uuml;mmern wir uns um das Bild f&uuml;r die Schaltfl&auml;che. Dazu markieren Sie die Schaltfl&auml;che und &ouml;ffnen auch hier die Eigenschaften. Klicken Sie auf die Eigenschaft <b>Image <\/b>und dann auf die Schaltfl&auml;che mit den drei Punkten. Es erscheint der Dialog <b>Ressource ausw&auml;hlen<\/b>, mit dem Sie &uuml;ber die Schaltfl&auml;che <b>Importieren&#8230; <\/b>unter der Option <b>Lokale Ressource <\/b>die gew&uuml;nschte Bilddatei selektieren. Anschlie&szlig;end wird das gew&auml;hlte Bild im Dialog angezeigt (s. Bild 17).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_017.png\" alt=\"Hinzuf&uuml;gen einer Bilddatei zu einer Schaltfl&auml;che\" width=\"649,559\" height=\"521,9395\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 17: Hinzuf&uuml;gen einer Bilddatei zu einer Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Da wir ein Bild mit einer Gr&ouml;&szlig;e von 32&#215;32 Pixeln gew&auml;hlt haben, soll die Ribbon-Schaltfl&auml;che auch in der entsprechenden Gr&ouml;&szlig;e angezeigt werden. Dazu stellen Sie noch die Eigenschaft <b>ControlSize <\/b>auf den Wert <b>RibbonControlSizeLarge <\/b>ein.<\/p>\n<p>Schlie&szlig;lich wollen wir auch gleich noch zeigen, wie Sie eine bestimmte Position f&uuml;r die Schaltfl&auml;che beziehungsweise die Gruppe, in der sich die Schaltfl&auml;che befindet, festlegen. Dazu klicken Sie auf die Gruppe und klappen die Eigenschaft <b>Position <\/b>auf. W&auml;hlen Sie f&uuml;r die Eigenschaft <b>Position <\/b>den Wert <b>BeforeOfficeId <\/b>aus und geben Sie unter <b>OfficeId <\/b>den Wert <b>GroupViews <\/b>ein (die Namen der eingebauten Tabs, Gruppen und Steuerelemente k&ouml;nnen Sie auch der Datei entnehmen, die Sie unter dem Link <b>http:\/\/go.microsoft.com\/fwlink\/LinkID=181052 <\/b>finden).<\/p>\n<p>Zeit f&uuml;r einen erneuten Versuch, der diesmal zum Erfolg f&uuml;hrt (s. Bild 18).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_019.png\" alt=\"Ribbon mit einer neu hinzugef&uuml;gten Schaltfl&auml;che\" width=\"499,6607\" height=\"126,3053\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 18: Ribbon mit einer neu hinzugef&uuml;gten Schaltfl&auml;che<\/span><\/b><\/p>\n<h2>Benutzerdefiniertes Tab hinzuf&uuml;gen<\/h2>\n<p>Wollen Sie die Funktionen Ihres Add-Ins gar in einem eigenen Ribbon-Tab anzeigen, sind nur kleine &auml;nderungen n&ouml;tig. Wir f&uuml;gen dazu ein neues <b>Tab<\/b>-Element aus der Toolbox zum Entwurf des Ribbons hinzu.<\/p>\n<p>Legen Sie als <b>Name <\/b>den Wert <b>tabBeispiel <\/b>und als <b>Label <\/b>den Wert <b>Beispieltab <\/b>fest. Wir wollen keinen gro&szlig;en Aufwand betreiben, um eine neue Gruppe mit einer neuen Schaltfl&auml;che plus Bild zu erstellen. Das ist auch nicht n&ouml;tig: Sie k&ouml;nnen einfach das <b>Group<\/b>-Element aus dem ersten Tab markieren, mit <b>Strg + C <\/b>kopieren, zum neuen Tab wechseln und die Gruppe dort mit <b>Strg + V <\/b>wieder einf&uuml;gen. Das Ergebnis sieht dann wie in Bild 19 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_020.png\" alt=\"Benutzerdefiniertes Tab-Element\" width=\"499,6607\" height=\"303,3057\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 19: Benutzerdefiniertes Tab-Element<\/span><\/b><\/p>\n<p>Achten Sie darauf, dass f&uuml;r die Eigenschaft <b>ControlIdType <\/b>der Wert <b>Custom <\/b>ausgew&auml;hlt ist.<\/p>\n<p>Das Ergebnis in der gestarteten Access-Anwendung sieht dann wie in Bild 20 aus. Damit es ein Ereignis ausl&ouml;st, m&uuml;ssen Sie dieses allerdings noch implementieren (siehe weiter oben).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_021.png\" alt=\"Benutzerdefiniertes Tab-Element im Einsatz\" width=\"499,6607\" height=\"142,3764\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 20: Benutzerdefiniertes Tab-Element im Einsatz<\/span><\/b><\/p>\n<h2>Add-Ins aktivieren und deaktivieren<\/h2>\n<p>Nach dem Debuggen bleiben der Registry-Eintrag sowie die erstellten Add-In-Dateien im <b>Debug<\/b>-Verzeichnis enthalten, sodass ein Einsatz auf der Entwicklungsmaschine auch nach dem Schlie&szlig;en von Visual Studio m&ouml;glich ist. Sie brauchen das Projekt also nicht etwa zu erstellen und neu zu registrieren et cetera.<\/p>\n<p>Wenn Sie das Add-In nicht mehr nutzen wollen, haben Sie mehrere M&ouml;glichkeiten. Die sauberste ist es, den entsprechenden Eintrag aus der Registry zu entfernen. Dazu gehen Sie im Registrierungseditor wie weiter oben beschrieben zum entsprechenden Eintrag und l&ouml;schen das betroffene Element unterhalb von <b>&#8230;\/Access\/AddIns<\/b>. Um diesen Eintrag erneut hinzuzuf&uuml;gen, m&uuml;ssen Sie das Add-In-Projekt in Visual Studio erneut erstellen oder debuggen.<\/p>\n<p>Die zweite Variante erledigen Sie &uuml;ber die Access-Optionen. Dieser Weg ist nicht so endg&uuml;ltig und erm&ouml;glicht leicht, das Add-In wieder zu aktivieren.<\/p>\n<p>Dazu zeigen Sie unter Access den <b>Optionen<\/b>-Dialog an. Hier wechseln Sie zum Bereich Add-Ins, der unten ein Kombinationsfeld zur Auswahl der zu verwaltenden Elemente anbietet. Hier behalten Sie den voreingestellten Wert <b>COM-Add-Ins <\/b>bei und klicken auf <b>Los&#8230;<\/b> (s. Bild 21).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_022.png\" alt=\"&uuml;bersicht der Add-Ins\" width=\"649,559\" height=\"433,6466\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 21: &uuml;bersicht der Add-Ins<\/span><\/b><\/p>\n<p>Dies &ouml;ffnet einen weiteren Dialog (s. Bild 22). Hier haben Sie zwei M&ouml;glichkeiten:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_04\/pic_1092_023.png\" alt=\"&uuml;bersicht der COM-Add-Ins\" width=\"549,6265\" height=\"213,4232\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 22: &uuml;bersicht der COM-Add-Ins<\/span><\/b><\/p>\n<ul>\n<li>Sie aktivieren oder deaktivieren das jeweilige COM-Add-In &uuml;ber das entsprechende Kontrollk&auml;stchen.<\/li>\n<li>Sie entfernen ein Add-In, indem Sie es markieren und dann auf die Schaltfl&auml;che <b>Entfernen <\/b>klicken. Dies entfernt den Eintrag direkt aus der Windows Registry.<\/li>\n<\/ul>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Das sind die Grundlagen zum Erstellen eines Access-Add-Ins auf Basis einer Vorlage f&uuml;r ein Excel-Add-In. Es sind ein paar zus&auml;tzliche Schritte n&ouml;tig im Vergleich zur Erstellunt eines Word-, Excel- oder Outlook-Add-Ins, aber zumindest f&uuml;r den Einsatz in Ihrer Entwicklungsumgebung lohnt sich der Aufwand &#8211; vor allen, wenn Sie Funktionen hinzuf&uuml;gen wollen, f&uuml;r die .NET Bibliotheken bereith&auml;lt, die es unter VBA nicht gibt.<\/p>\n<p>In einem weiteren Artikel schauen wir uns an, wie Sie ein Add-In mit sinnvollen Funktionen f&uuml;llen.<\/p>\n<p>Die Beispiele kommen in C#, weil dies die leicht bevorzugte Sprache bei der Entwicklung von .NET-Anwendungen ist. Sie finden mehr Beispiele im Internet in dieser Programmiersprache als zu VB.<\/p>\n<p>Im Download zu diesem Beitrag finden Sie allerdings auch ein umgewandeltes Add-In-Projekt in der Programmiersprache VB (siehe Projekt <b>AccessAddIn_VB<\/b>).<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>AccessAddIn_VB.rar<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/7ED9AB97-0CF3-4727-995D-D81378B63F0F\/aiu_1092.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Access-Add-Ins k&ouml;nnen Sie mit Access selbst erstellen oder aber auch mit Visual Studio, zum Beispiel in der kostenlosen Visual Studio 2015 Community Edition. Dieser Beitrag zeigt, wie Sie ein Access-Add-In mit Visual Studio erstellen und was dabei zu beachten ist. Dabei legen wir vor allem ein Augenmerk darauf, wie Sie dem Fehlen einer Vorlage zum Erstellen von Access-Add-Ins begegnen und ein Add-In f&uuml;r eine andere Office-Anwendung nutzen, um ein Access-Add-In zu programmieren.<\/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":[662017,66042017,44000025],"tags":[],"class_list":["post-55001092","post","type-post","status-publish","format-standard","hentry","category-662017","category-66042017","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>Access-Add-In mit VSTO - 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\/AccessAddIn_mit_VSTO\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access-Add-In mit VSTO\" \/>\n<meta property=\"og:description\" content=\"Access-Add-Ins k&ouml;nnen Sie mit Access selbst erstellen oder aber auch mit Visual Studio, zum Beispiel in der kostenlosen Visual Studio 2015 Community Edition. Dieser Beitrag zeigt, wie Sie ein Access-Add-In mit Visual Studio erstellen und was dabei zu beachten ist. Dabei legen wir vor allem ein Augenmerk darauf, wie Sie dem Fehlen einer Vorlage zum Erstellen von Access-Add-Ins begegnen und ein Add-In f&uuml;r eine andere Office-Anwendung nutzen, um ein Access-Add-In zu programmieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T21:25:59+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea\" \/>\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=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Access-Add-In mit VSTO\",\"datePublished\":\"2020-05-13T21:25:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/\"},\"wordCount\":3468,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d2486fcf98c45c896a99b6754d64dea\",\"articleSection\":[\"2017\",\"4\\\/2017\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/\",\"name\":\"Access-Add-In mit VSTO - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d2486fcf98c45c896a99b6754d64dea\",\"datePublished\":\"2020-05-13T21:25:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d2486fcf98c45c896a99b6754d64dea\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/6d2486fcf98c45c896a99b6754d64dea\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessAddIn_mit_VSTO\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access-Add-In mit VSTO\"}]},{\"@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":"Access-Add-In mit VSTO - 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\/AccessAddIn_mit_VSTO\/","og_locale":"de_DE","og_type":"article","og_title":"Access-Add-In mit VSTO","og_description":"Access-Add-Ins k&ouml;nnen Sie mit Access selbst erstellen oder aber auch mit Visual Studio, zum Beispiel in der kostenlosen Visual Studio 2015 Community Edition. Dieser Beitrag zeigt, wie Sie ein Access-Add-In mit Visual Studio erstellen und was dabei zu beachten ist. Dabei legen wir vor allem ein Augenmerk darauf, wie Sie dem Fehlen einer Vorlage zum Erstellen von Access-Add-Ins begegnen und ein Add-In f&uuml;r eine andere Office-Anwendung nutzen, um ein Access-Add-In zu programmieren.","og_url":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T21:25:59+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Access-Add-In mit VSTO","datePublished":"2020-05-13T21:25:59+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/"},"wordCount":3468,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea","articleSection":["2017","4\/2017","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/","url":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/","name":"Access-Add-In mit VSTO - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea","datePublished":"2020-05-13T21:25:59+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/6d2486fcf98c45c896a99b6754d64dea"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/AccessAddIn_mit_VSTO\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access-Add-In mit VSTO"}]},{"@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\/55001092","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=55001092"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001092\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}