{"id":55001282,"date":"2021-02-01T00:00:00","date_gmt":"2021-02-17T18:40:29","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1282"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"AddInTools_fuer_den_Formularentwurf","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/","title":{"rendered":"Add-In-Tools f&uuml;r den Formularentwurf"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_001.png\" alt=\"Zu benennende Steuerelemente\" width=\"549,6265\" height=\"249,6473\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Zu benennende Steuerelemente<\/span><\/b><\/p>\n<p><b>Als ich neulich mal wieder einige Steuerelemente zu einem Formular hinzugef&uuml;gt habe, die durchnummerierte Namen erhalten sollten wie txt01, txt02 und so weiter, kam die Eingebung: Warum diese langweilige Arbeit immer wieder von Hand erledigen, statt einfach ein Tool daf&uuml;r zu entwickeln Gesagt, getan: Es sollte ein kleines Add-In her, mit dem sich diese erste kleine Aufgabe vereinfachen lie&szlig;. Wie Sie vermutlich auch, programmiere ich n&auml;mlich lieber als dass ich immer wiederkehrende Aufgaben durchf&uuml;hre. Das Durchnummerieren von markierten Steuerelementen nach bestimmten Vorgaben soll die erste Funktion dieses Add-Ins sein. Ihnen und mir fallen sicher noch noch weitere Ideen f&uuml;r den Einsatz dieses Add-Ins ein!<\/b><\/p>\n<p>Der Ausl&ouml;ser f&uuml;r die Programmierung des in diesem Beitrag beschriebenen Add-Ins ist das unscheinbare Formular aus Bild 1.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_001.png\" alt=\"Zu benennende Steuerelemente\" width=\"549,6265\" height=\"249,6473\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Zu benennende Steuerelemente<\/span><\/b><\/p>\n<p>Die drei Kombinationsfelder sollen die Namen <b>cboSucheNach1<\/b>, <b>cboSucheNach2 <\/b>und <b>cboSucheNach3 <\/b>erhalten und die Textfelder rechts daneben die Namen <b>txtSucheNach1<\/b>, <b>txtSucheNach2 <\/b>und <b>txtSucheNach3<\/b>.<\/p>\n<p>Darauf, das von Hand zu erledigen, hatte ich keine Lust. Also habe ich zuerst eine kleine Prozedur geschrieben, die wie in Listing 1 aussieht.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>SteuerelementeBenennen(strBezeichnung<span style=\"color:blue;\"> As String<\/span>, strPlatzhalter<span style=\"color:blue;\"> As String<\/span>, intStellen<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         <span style=\"color:blue;\">Optional<\/span> intStart<span style=\"color:blue;\"> As Integer<\/span> = 1)\r\n     <span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Form\r\n     <span style=\"color:blue;\">Dim <\/span>ctl<span style=\"color:blue;\"> As <\/span>Control\r\n     <span style=\"color:blue;\">Dim <\/span>intNummer<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strStellen<span style=\"color:blue;\"> As String<\/span>\r\n     intNummer = intStart\r\n     <span style=\"color:blue;\">Set<\/span> frm = Screen.ActiveForm\r\n     strStellen = String(intStellen, \"0\")\r\n     For Each ctl In frm.Controls\r\n         <span style=\"color:blue;\">If <\/span>ctl.InSelection<span style=\"color:blue;\"> Then<\/span>\r\n             ctl.Name = <span style=\"color:blue;\">Replace<\/span>(strBezeichnung, strPlatzhalter, Format(intNummer, strStellen))\r\n             intNummer = intNummer + 1\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> ctl\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Benennen von Steuerelementen<\/span><\/b><\/p>\n<p>Sie erwartet die folgenden Parameter, um die Benennung der Steuerelemente so flexibel wie m&ouml;glich zu machen:<\/p>\n<ul>\n<li><b>strBezeichnung<\/b>: Bezeichnung des Steuerelements inklusive eines Platzhalters, an dessen Stelle die Nummern eingetragen werden.<\/li>\n<li><b>strPlatzhalter<\/b>: Platzhalter, der durch die Nummern ersetzt werden soll.<\/li>\n<li><b>intStellen<\/b>: Anzahl der Stellen f&uuml;r die Durchnummerierung. Der Wert <b>2 <\/b>w&uuml;rde beispielsweise bei den ersten Namen um eine f&uuml;hrende <b>0 <\/b>erg&auml;nzt werden, also beispielsweise <b>02<\/b>.<\/li>\n<li><b>intStart<\/b>: Gibt die Nummer f&uuml;r das erste Steuerelement an. Standardwert ist <b>1<\/b>. Geben Sie einen anderen Wert an, wird die Nummerierung mit diesem begonnen.<\/li>\n<\/ul>\n<p>Ein Aufruf dieser Prozedur sieht beispielsweise wie folgt aus:<\/p>\n<pre>SteuerelementeBenennen \"cboSucheNach[]\", \"[]\", 1, 1<\/pre>\n<p>Hier wird immer der Basisname <b>cboSucheNach[] <\/b>verwendet, bei dem die Zeichenfolge <b>[] <\/b>durch die aktuelle Zahl ersetzt wird &#8211; in diesem Fall mit einer Stelle, also ohne f&uuml;hrende <b>0 <\/b>bei den ersten Eintr&auml;gen.<\/p>\n<p>Die Prozedur tr&auml;gt zuerst den Wert der Startzahl aus dem Parameter <b>intStart <\/b>in die Variable <b>intNummer <\/b>ein. Dann referenziert sie das aktuell ge&ouml;ffnete Formular mit <b>Screen.ActiveForm<\/b>. Diese erste Fassung enth&auml;lt noch keine Pr&uuml;fung, ob beispielsweise &uuml;berhaupt ein Formular ge&ouml;ffnet ist oder ob der Benutzer Steuerelemente zum Umbenennen markiert hat.<\/p>\n<p>Dann verwendet die Prozedur den Wert aus dem Parameter <b>intStellen<\/b>, um in <b>strStellen <\/b>eine Zeichenkette mit so vielen Nullen zu f&uuml;llen, wie es in <b>intStellen <\/b>angegeben ist. Damit starten wir in eine <b>For Each<\/b>-Schleife &uuml;ber alle Steuerelemente des mit <b>frm<\/b> referenzierten Formulars.<\/p>\n<p>In der Schleife pr&uuml;fen wir zuerst in einer <b>If&#8230;Then<\/b>-Bedingung, ob das aktuell durchlaufene Steuerelement markiert ist. Dazu nutzen wir die Eigenschaft <b>InSelection<\/b>. In der <b>If&#8230;Then<\/b>-Bedingung stellen wir die Eigenschaft <b>Name <\/b>des mit <b>ctl <\/b>referenzierten aktuellen Steuerelements auf die gew&uuml;nschte Bezeichnung ein.<\/p>\n<p>Diese ermitteln wir, indem wir den Platzhalter <b>strPlatzhalter <\/b>in <b>strBezeichnung <\/b>mit <b>Replace <\/b>ersetzen, und zwar durch den Wert aus der Variablen <b>intNummer <\/b>mit dem Format aus <b>strStellen<\/b>.<\/p>\n<h2>Pr&uuml;fungen<\/h2>\n<p>Damit haben wir den gr&ouml;&szlig;ten Teil bereits erledigt. Bevor wir ein Add-In auf Basis dieser Prozedur anlegen, wollen wir jedoch noch zwei Pr&uuml;fungen einbauen. Die Erste soll untersuchen, ob &uuml;berhaupt ein Formular in der Entwurfsansicht ge&ouml;ffnet ist. Dazu deklarieren wir eine Variable namens <b>bolEntwurfsansicht<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>bolEntwurfsansicht<span style=\"color:blue;\"> As Boolean<\/span><\/pre>\n<p>Die Abfrage von Screen.ActiveForm fassen wir in <b>On Error Resume Next<\/b>\/<b>On Error Goto 0 <\/b>ein, um die Fehlerbehandlung f&uuml;r diese eine Anweisung zu deaktivieren. Der Grund ist, dass der Aufruf ohne ge&ouml;ffnetes Formular einen Fehler ausl&ouml;st, den wir vermeiden wollen. Dann pr&uuml;ft die Prozedur, ob <b>frm <\/b>leer ist, was der Fall ist, wenn kein Formular ge&ouml;ffnet ist. Ist <b>frm <\/b>nicht leer, pr&uuml;fen wir mit der Eigenschaft <b>CurrentView<\/b>, ob die aktuelle Ansicht die Entwurfsansicht ist. Falls ja, stellen wir die Variable <b>bolEntwurfsansicht <\/b>auf <b>True <\/b>ein:<\/p>\n<pre>...\r\nOn Error Resume <span style=\"color:blue;\">Next<\/span>\r\n<span style=\"color:blue;\">Set<\/span> frm = Screen.ActiveForm\r\nOn Error Goto 0\r\n<span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> frm Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n     <span style=\"color:blue;\">If <\/span>frm.CurrentView = acCurViewDesign<span style=\"color:blue;\"> Then<\/span>\r\n         bolEntwurfsansicht = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End If<\/span><\/pre>\n<p>Hat <b>bolEntwurfsansicht <\/b>danach noch den Wert <b>False<\/b>, ist das aktive Element entweder kein Formular oder dieses ist nicht in der Entwurfsansicht ge&ouml;ffnet. In diesem Fall gibt die Prozedur eine entsprechende Meldung aus und wird abgebrochen:<\/p>\n<pre><span style=\"color:blue;\">If <\/span>bolEntwurfsansicht = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n     <span style=\"color:blue;\">MsgBox<\/span> \"Es ist kein Formular in der Entwurfsansicht  ge&ouml;ffnet.\", vbOKOnly + vbExclamation, \"Kein  Formular ge&ouml;ffnet\"\r\n     <span style=\"color:blue;\">Exit Sub<\/span>\r\n<span style=\"color:blue;\">End If<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p>Au&szlig;erdem kann es sein, dass wir die gleichen Steuerelemente zu Testzwecken mehrere Male umbenennen oder dass diese aus anderen Gr&uuml;nden zuvor bereits solche Namen erhalten haben, wie Sie diese mit der Prozedur zuweisen wollen. Dabei kann es vorkommen, dass Sie einem Steuerelement einen Namen geben wollen, der bereits vergeben ist. Dies w&uuml;rde einen Fehler ausl&ouml;sen.<\/p>\n<p>Um dies zu verhindern, durchlaufen wir eine &auml;hnliche <b>For Each<\/b>-Schleife wie diejenige, welche die gew&uuml;nschten Namen zuweist, bereits vorher und vergeben Namen wie <b>xyz1<\/b>, <b>xyz2 <\/b>und so weiter f&uuml;r die Steuerelemente, bevor diese ihre endg&uuml;ltigen Namen erhalten. Danach m&uuml;ssen wir <b>intNummer <\/b>erneut mit <b>intStart <\/b>initialisieren:<\/p>\n<pre>For Each ctl In frm.Controls\r\n     <span style=\"color:blue;\">If <\/span>ctl.InSelection<span style=\"color:blue;\"> Then<\/span>\r\n         ctl.Name = \"xyz\" & intNummer\r\n         intNummer = intNummer + 1\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">Next<\/span> ctl\r\nintNummer = intStart<\/pre>\n<h2>Ung&uuml;nstige Aktivierreihenfolge<\/h2>\n<p>Es kann sein, dass die Aktivierreihenfolge der zu benennenden Steuerelemente nicht der Reihenfolge entspricht, in der die Steuerelemente neben- oder untereinander angeordnet sind.<\/p>\n<p>Die <b>For Each<\/b>-Schleife &uuml;ber alle <b>Control<\/b>-Elemente des Formulars durchl&auml;uft diese jedoch in der Reihenfolge, die der Aktivierreihenfolge entspricht.<\/p>\n<p>Die Aktivierreihenfolge k&ouml;nnen Sie jedoch zuvor &uuml;ber den Dialog <b>Reihenfolge <\/b>einstellen, wenn die Aktivierreihenfolge nicht stimmt (siehe Bild 2). Diesen Dialog &ouml;ffnen Sie &uuml;ber den Ribbon-Befehl <b>Entwurf|Tools|Eigenschaften<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_002.png\" alt=\"Aktivierreihenfolge der Steuerelemente\" width=\"424,7115\" height=\"435,8615\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Aktivierreihenfolge der Steuerelemente<\/span><\/b><\/p>\n<h2>Parameter per Formular eingeben<\/h2>\n<p>Damit der Benutzer die Parameter bequem eingeben kann, wenn er das Add-In aufgerufen hat, stellen wir ihm ein passendes Formular zur Verf&uuml;gung. Dieses soll die zuletzt verwendeten Werte au&szlig;erdem speichern. Dazu erstellen wir zuerst eine Tabelle namens <b>tblOptionen<\/b>. Diese enth&auml;lt die Felder aus Bild 3.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_003.png\" alt=\"Entwurf der Tabelle zum Speichern der Add-In-Optionen\" width=\"424,7115\" height=\"319,6514\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Entwurf der Tabelle zum Speichern der Add-In-Optionen<\/span><\/b><\/p>\n<p>Das Formular zur Eingabe dieser Optionen benennen wir <b>frmSteuerelementeNummerieren<\/b>. Nach dem Anlegen stellen wir seine Eigenschaften <b>Datensatzmarkierer<\/b>, <b>Navigationsschaltfl&auml;chen<\/b>, <b>Trennlinien <\/b>und <b>Bildlaufleisten <\/b>auf <b>Nein <\/b>und <b>Automatisch zentrieren <\/b>auf <b>Ja <\/b>ein.<\/p>\n<p>Au&szlig;erdem legen wir als Datensatzquelle die Tabelle <b>tblOptionen <\/b>fest und stellen die Eigenschaft <b>Zyklus <\/b>auf <b>Aktueller Datensatz <\/b>ein. So kann der Benutzer nicht versehentlich einen zweiten Satz Optionen hinzuf&uuml;gen. Schlie&szlig;lich ziehen wir die vier Felder der Tabelle aus der Feldliste in den Detailbereich des Formularentwurfs. Au&szlig;erdem f&uuml;gen wir eine Schaltfl&auml;che namens <b>cmdSteuerelementeBenennen<\/b> hinzu. Das Ergebnis finden Sie in Bild 4.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_004.png\" alt=\"Formular zum Eingeben der Parameter\" width=\"424,7115\" height=\"278,3468\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Formular zum Eingeben der Parameter<\/span><\/b><\/p>\n<p>Die Prozedur, die durch die Schaltfl&auml;che <b>cmdSteuerelementeBenennen<\/b> ausgel&ouml;st wird, braucht nun prinzipiell nur noch die Prozedur <b>SteuerelementeBenennen <\/b>aufzurufen und dieser die Parameter aus den Textfeldern zu &uuml;bergeben. Dazu definieren wir die folgende Prozedur:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdSteuerelementeBenennen_Click()\r\n     SteuerelementeBenennen Me!Bezeichnung, _\r\n         Me!Platzhalter, Me!Stellen, Me!Start\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Nun &ouml;ffnen wir das Zielformular in der Entwurfsansicht und markieren die umzubenennenden Felder. Wenn wir dann das Formular <b>frmSteuerelementeNummerieren <\/b>&ouml;ffnen, die Parameter einstellen und auf die Schaltfl&auml;che <b>cmdSteuerelementeBenennen<\/b> klicken, erhalten wir die Meldung aus Bild 5.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_005.png\" alt=\"Das Zielformular wird nicht gefunden.\" width=\"499,6607\" height=\"306,3494\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Das Zielformular wird nicht gefunden.<\/span><\/b><\/p>\n<p>Das ist auch kein Wunder, denn zum Zeitpunkt des Aufrufs der Prozedur <b>SteuerelementeBenennen <\/b>wird das Formular <b>frmSteuerelementeNummerieren <\/b>mit <b>Screen.ActiveForm <\/b>referenziert und nicht <b>frmMetadatenDurchsuchen<\/b>.<\/p>\n<p>Also m&uuml;ssen wir uns &uuml;berlegen, wie wir das tats&auml;chlich zu bearbeitende Formular ermitteln. Mit <b>Screen.ActiveForm <\/b>kommen wir zu diesem Zeitpunkt jedenfalls nicht mehr an das im Entwurf angezeigte Formular heran.<\/p>\n<p>Sagte ich &#8222;zu diesem Zeitpunkt&#8220; Es muss ja gar nicht dieser Zeitpunkt sein. Wir k&ouml;nnen ja auch beim &Ouml;ffnen des Formulars <b>frmSteuerelementeNummerieren <\/b>schon pr&uuml;fen, welches Formular zu diesem Zeitpunkt das aktive Formular ist.<\/p>\n<p>Dazu f&uuml;gen wir dem Klassenmodul des Formulars <b>frmSteuerelementeNummerieren <\/b>die folgende Variable hinzu:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>strForm<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Diese f&uuml;llen wir gleich beim &Ouml;ffnen des Formulars in der Prozedur, die durch das Ereignis <b>Beim &Ouml;ffnen <\/b>ausgel&ouml;st wird. Hierhin ziehen wir auch gleich die Pr&uuml;fung vor, ob es sich bei dem Formular um ein Formular in der Entwurfsansicht handelt.<\/p>\n<p>Diese Prozedur namens <b>Form_Open <\/b>ermittelt wieder bei deaktivierter Fehlerbehandlung einen Verweis auf das aktuelle Formular (siehe Listing 2). Da das Formular <b>frmSteuerelemente-Nummerieren <\/b>zu diesem Zeitpunkt noch nicht angezeigt wird, ermittelt <b>Screen.ActiveForm <\/b>das korrekte Formular und referenziert es mit <b>frm<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Form\r\n     <span style=\"color:blue;\">Dim <\/span>bolEntwurfsansicht<span style=\"color:blue;\"> As Boolean<\/span>\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> frm = Screen.ActiveForm\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> frm Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>frm.CurrentView = acCurViewDesign<span style=\"color:blue;\"> Then<\/span>\r\n             bolEntwurfsansicht = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span>bolEntwurfsansicht = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Es ist kein Formular in der Entwurfsansicht ge&ouml;ffnet.\", vbOKOnly + vbExclamation, \"Kein Formular ge&ouml;ffnet\"\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         strForm = frm.Name\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur, die beim &Ouml;ffnen des Add-In-Formulars ausgel&ouml;st wird<\/span><\/b><\/p>\n<p>Dann pr&uuml;ft die Prozedur, ob sich das Formular in der richtigen Ansicht befindet und zeigt eine Meldung an, falls kein Formular in der Entwurfsansicht das aktuelle Formular ist. Hier kommt eine &Auml;nderung gegen&uuml;ber der Variante, die wir aus der Prozedur <b>Steuerelemente <\/b>&uuml;bernommen haben: Mit dem Einstellen des Parameters <b>Cancel <\/b>auf den Wert <b>True <\/b>wird das &Ouml;ffnen des Formular in diesem Fall abgebrochen. Anderenfalls schreibt die Prozedur den Namen des zu untersuchenden Formulars in die Variable <b>strForm<\/b>.<\/p>\n<p>Nachdem der Benutzer die Parameter in das Formular <b>frmSteuerelementeNummerieren <\/b>eingegeben hat, ruft er mit einem Klick auf die Schaltfl&auml;che <b>cmdSteuerelementeBenennen <\/b>die neue Version der folgenden Prozedur auf. Diese &uuml;bergibt nun als ersten Parameter der Prozedur <b>SteuerelementeBenennen <\/b>den Namen des anzupassenden Formulars:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdSteuerelementeBenennen_Click()\r\n     SteuerelementeBenennen strForm, Me!Bezeichnung, _\r\n         Me!Platzhalter, Me!Stellen, Me!Start\r\n     DoCmd.Close acForm, Me.Name\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wie wir die Prozedur <b>SteuerelementeBenennen <\/b>angepasst haben, k&ouml;nnen Sie dem Modul <b>mdlAddIn <\/b>der Beispieldatenbank entnehmen.<\/p>\n<h2>Add-In erstellen<\/h2>\n<p>Um die Datenbank mit den bisher hinzugef&uuml;gten Elementen in ein Add-In umzuwandeln, sind noch einige Schritte erforderlich.<\/p>\n<p>Der Erste ist das Umbenennen auf die Dateiendung <b>.accda<\/b>.<\/p>\n<p>Der Zweite ist das Hinzuf&uuml;gen einer Funktion, die den gleichen Namen tr&auml;gt wie in der Tabelle <b>USysRegInfo <\/b>f&uuml;r den ersten Datensatz angegeben, hier <b>Autostart<\/b>. Diese wird beim Start des Add-Ins aufgerufen. Sie soll das Formular <b>frmSteuerelementeNummerieren <\/b>&ouml;ffnen. Dabei k&ouml;nnen Fehler auftauchen.<\/p>\n<p>Einer davon ist der Fehler mit der Nummer <b>2501<\/b>, der bei Abbrechen des &Ouml;ffnens eines mit <b>DoCmd.OpenForm <\/b>ge&ouml;ffneten Formulars ausgel&ouml;st wird. Diesen wollen wir ignorieren, damit der Benutzer nicht irritiert wird, und zeigen nur Fehlermeldungen f&uuml;r Fehler mit anderen Fehlermeldungen als <b>2501 <\/b>an:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Autostart()\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     DoCmd.OpenForm \"frmSteuerelementeNummerieren\",  WindowMode:=acDialog\r\n     Select Case Err.Number\r\n         <span style=\"color:blue;\">Case <\/span>2501\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             Err.Raise Err.Number, , Err.Description\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Danach f&uuml;gen wir die Tabelle <b>USysRegInfo<\/b> wie in Bild 6 hinzu. Diese Tabelle enth&auml;lt die Informationen, anhand derer das Add-In in die Registry eingetragen wird. Die dortigen Informationen werden hingegen von Access beim Start ausgelesen und in einen Eintrag in das Add-In-Men&uuml; im Ribbon umgewandelt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_007.png\" alt=\"Hinzuf&uuml;gen der Tabelle USysRegInfo\" width=\"649,559\" height=\"251,5031\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Hinzuf&uuml;gen der Tabelle USysRegInfo<\/span><\/b><\/p>\n<p>Damit im Add-In-Manager aussagekr&auml;ftige Informationen f&uuml;r dieses Add-In erscheinen, f&uuml;llen Sie die Datenbankeigenschaften der Add-In-Datenbank wie in Bild 7.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_006.png\" alt=\"Datenbank-Einstellungen, die im Add-In-Manager angezeigt werden\" width=\"424,7115\" height=\"458,8492\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Datenbank-Einstellungen, die im Add-In-Manager angezeigt werden<\/span><\/b><\/p>\n<p>Nach der Durchf&uuml;hrung dieser Schritte schlie&szlig;en Sie die Add-In-Datenbank.<\/p>\n<p>&Ouml;ffnen Sie nun eine weitere Datenbank und w&auml;hlen Sie im Ribbon den Eintrag <b>Datenbanktools|Add-Ins|Add-In-Manager <\/b>aus. Im nun erscheinenden Dialog <b>Add-In-Manager <\/b>klicken Sie auf <b>Neues hinzuf&uuml;gen&#8230; <\/b>und w&auml;hlen die <b>.accda<\/b>-Datenbank aus. Danach erscheint das Add-In wie in Bild 8 in der Liste der Add-Ins.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_01\/pic_1282_008.png\" alt=\"Das neue Add-In im Add-In-Manager\" width=\"424,7115\" height=\"253,8506\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Das neue Add-In im Add-In-Manager<\/span><\/b><\/p>\n<p>Anschlie&szlig;end k&ouml;nnen Sie das Add-In aus der Liste der Add-Ins im Ribbon ausw&auml;hlen und verwenden.<\/p>\n<h2>Funktion im &Uuml;berblick<\/h2>\n<p>Ziel des Add-Ins ist es, das Benennen von Steuerelementen nach einem Schema wie <b>txt01<\/b>, <b>txt02<\/b>, <b>txt03 <\/b>et cetera zu vereinfachen und diese Arbeit nicht mehr von Hand ausf&uuml;hren zu m&uuml;ssen. Wenn Sie vor einer solchen Aufgabe stehen, f&uuml;hren Sie folgende Schritte aus:<\/p>\n<ul>\n<li>&Ouml;ffnen des betroffenen Formulars in der Entwurfsansicht<\/li>\n<li>Markieren aller Steuerelemente, deren Name angepasst werden soll<\/li>\n<li>Aufruf des Add-Ins &uuml;ber den Ribbon-Eintrag <b>Datenbanktools|Add-Ins|amvFormularentwurf<\/b><\/li>\n<li>Eingeben der gew&uuml;nschten Parameter in das Formular des Add-Ins<\/li>\n<li>Ausf&uuml;hren der &Auml;nderungen durch einen Klick auf die Schaltfl&auml;che <\/li>\n<\/ul>\n<p>Danach finden Sie f&uuml;r die gew&auml;hlten Steuerelemente die neuen Benennungen entsprechend Ihrer Vorgaben vor.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dies ist nur ein Beispiel f&uuml;r ein Add-In, das Ihnen die Arbeit mit dem Formularentwurf erleichtert. Andere k&ouml;nnten Sie nutzen, um beispielsweise die Steuerelemente eines Formulars mit Pr&auml;fixen zu versehen.<\/p>\n<p>Access hat ja die Eigenart, gebundene Steuerelemente, die aus der Feldliste in den Formularentwurf gezogen werden, mit dem gleichen Namen zu versehen wie das Feld, an welches das Steuerelement gebunden ist.<\/p>\n<p>Damit stellen Sie eine Unterscheidbarkeit zwischen Steuerelement und Feld her. Bei einem Feld namens <b>Vorname <\/b>w&uuml;rde ein solches Add-In beispielsweise das Pr&auml;fix <b>txt <\/b>voranstellen, damit der Steuerelementname anschlie&szlig;end <b>txtVorname <\/b>lautet.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>amvFormularentwurf.accda<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/436B4313-AC71-45FA-9624-0151E7DD8A0C\/aiu_1282.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als ich neulich mal wieder einige Steuerelemente zu einem Formular hinzugef&uuml;gt habe, die durchnummerierte Namen erhalten sollten wie txt01, txt02 und so weiter, kam die Eingebung: Warum diese langweilige Arbeit immer wieder von Hand erledigen, statt einfach ein Tool daf&uuml;r zu entwickeln Gesagt, getan: Es sollte ein kleines Add-In her, mit dem sich diese erste kleine Aufgabe vereinfachen lie&szlig;. Wie Sie vermutlich auch, programmiere ich n&auml;mlich lieber als dass ich immer wiederkehrende Aufgaben durchf&uuml;hre. Das Durchnummerieren von markierten Steuerelementen nach bestimmten Vorgaben soll die erste Funktion dieses Add-Ins sein. Ihnen und mir fallen sicher noch noch weitere Ideen f&uuml;r den Einsatz dieses Add-Ins ein!<\/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":[66012021,662021,44000023],"tags":[],"class_list":["post-55001282","post","type-post","status-publish","format-standard","hentry","category-66012021","category-662021","category-Mit_Formularen_arbeiten"],"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>Add-In-Tools f&uuml;r den Formularentwurf - 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\/AddInTools_fuer_den_Formularentwurf\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add-In-Tools f&uuml;r den Formularentwurf\" \/>\n<meta property=\"og:description\" content=\"Als ich neulich mal wieder einige Steuerelemente zu einem Formular hinzugef&uuml;gt habe, die durchnummerierte Namen erhalten sollten wie txt01, txt02 und so weiter, kam die Eingebung: Warum diese langweilige Arbeit immer wieder von Hand erledigen, statt einfach ein Tool daf&uuml;r zu entwickeln Gesagt, getan: Es sollte ein kleines Add-In her, mit dem sich diese erste kleine Aufgabe vereinfachen lie&szlig;. Wie Sie vermutlich auch, programmiere ich n&auml;mlich lieber als dass ich immer wiederkehrende Aufgaben durchf&uuml;hre. Das Durchnummerieren von markierten Steuerelementen nach bestimmten Vorgaben soll die erste Funktion dieses Add-Ins sein. Ihnen und mir fallen sicher noch noch weitere Ideen f&uuml;r den Einsatz dieses Add-Ins ein!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-17T18:40:29+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd\" \/>\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=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Add-In-Tools f&uuml;r den Formularentwurf\",\"datePublished\":\"2021-02-17T18:40:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/\"},\"wordCount\":2064,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/b4ead773e05e453191703422665270dd\",\"articleSection\":[\"1\\\/2021\",\"2021\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/\",\"name\":\"Add-In-Tools f&uuml;r den Formularentwurf - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/b4ead773e05e453191703422665270dd\",\"datePublished\":\"2021-02-17T18:40:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/b4ead773e05e453191703422665270dd\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/b4ead773e05e453191703422665270dd\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AddInTools_fuer_den_Formularentwurf\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add-In-Tools f&uuml;r den Formularentwurf\"}]},{\"@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":"Add-In-Tools f&uuml;r den Formularentwurf - 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\/AddInTools_fuer_den_Formularentwurf\/","og_locale":"de_DE","og_type":"article","og_title":"Add-In-Tools f&uuml;r den Formularentwurf","og_description":"Als ich neulich mal wieder einige Steuerelemente zu einem Formular hinzugef&uuml;gt habe, die durchnummerierte Namen erhalten sollten wie txt01, txt02 und so weiter, kam die Eingebung: Warum diese langweilige Arbeit immer wieder von Hand erledigen, statt einfach ein Tool daf&uuml;r zu entwickeln Gesagt, getan: Es sollte ein kleines Add-In her, mit dem sich diese erste kleine Aufgabe vereinfachen lie&szlig;. Wie Sie vermutlich auch, programmiere ich n&auml;mlich lieber als dass ich immer wiederkehrende Aufgaben durchf&uuml;hre. Das Durchnummerieren von markierten Steuerelementen nach bestimmten Vorgaben soll die erste Funktion dieses Add-Ins sein. Ihnen und mir fallen sicher noch noch weitere Ideen f&uuml;r den Einsatz dieses Add-Ins ein!","og_url":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-17T18:40:29+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Add-In-Tools f&uuml;r den Formularentwurf","datePublished":"2021-02-17T18:40:29+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/"},"wordCount":2064,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd","articleSection":["1\/2021","2021","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/","url":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/","name":"Add-In-Tools f&uuml;r den Formularentwurf - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd","datePublished":"2021-02-17T18:40:29+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/b4ead773e05e453191703422665270dd"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/AddInTools_fuer_den_Formularentwurf\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Add-In-Tools f&uuml;r den Formularentwurf"}]},{"@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\/55001282","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=55001282"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001282\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}