Verknüpfte Tabellen können fantastisch nützlich sein (obwohl dies natürlich nicht immer der Fall ist) - insbesondere, wenn Sie mit externen Informationen arbeiten, die sich regelmäßig ändern. Ein typisches Beispiel könnte sein, wenn ein Lieferant Ihnen Zugriff auf seine aktuelle monatliche Preisdatei gewährt. Aber was passiert, wenn sie die Datei nächsten Monat herausgeben und der Dateiname von "Preisliste-01-01-2016" in "Preisliste-01-02-2016" geändert wird? Das erste, was passieren wird, ist, dass Ihr Link unterbrochen wird, sodass Sie ihn manuell aktualisieren müssen. Jedes Mal, wenn sie den Dateinamen ändern. Das gilt auch für Tabellennamen (natürlich!). Gibt es eine Möglichkeit, dies schnell und einfach zu tun? Wir freuen uns, dass Sie gefragt haben - lesen Sie weiter und finden Sie heraus, wie…
Szene setzen - das Szenario
In diesem Artikel werde ich ein fiktives Szenario verwenden - aber eines, das Sie sicher schnell erkennen werden!
Acme Trading sendet uns jeden Monat eine aktualisierte Preisliste für alle Verbrauchsmaterialien, die bei verwendet werden DataNumen. Damit wir wissen, wie viel wir jeden Monat für Schreibwaren ausgeben, verknüpfen wir diese Datei in unserer Büroverwaltungsdatenbank.
Das Problem ist, dass sich der Dateiname jeden Monat ändert, obwohl das Dateiformat gleich bleibt. Letzten Monat hieß die Datei „stationary costs Jan 2017.xls“, diesen Monat „stationary costs Feb 2017.xls“.
Ich bin mir sicher, dass Sie nicht viel ändern werden, aber es sei denn, wir haben uns die Mühe gemacht, die Datei manuell umzubenennen (sobald wir die alte Datei aus dem Weg geräumt oder gelöscht haben) oder den Prozess von erneutes Verknüpfen der Tabelle über den verknüpften Tabellenmanager in Access.
Da wir dies nicht wollten, haben wir stattdessen den folgenden Code erstellt - viel einfacher, wie Sie sicher sehen werden:
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'format of the connection string in our case, for example, is: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
Den Code erklären
Wie Sie sehen, übergeben wir den Namen der (verknüpften) Tabelle zusammen mit dem Namen der neuen Datei, mit der die Tabelle verknüpft werden soll. Der Dateiname muss den vollständigen Pfad zur Datei enthalten. Eine mögliche Schwierigkeit zu Beginn besteht darin, das korrekte Format für die Verbindungszeichenfolge zu finden, die in die Variable „newConnect“ eingefügt werden muss. Es gibt zwar zahlreiche Quellen, um das korrekte Format herauszufinden, aber am einfachsten ist es, sich die Verbindungszeichenfolge der aktuell verknüpften Tabelle anzusehen. Fügen Sie dazu einfach die folgende Zeile direkt unter der Zeile „Set objTableDef = objDB.TableDefs(tableName)“ ein:
Debug.Print (objTableDef.Connect)
Dadurch wird die vorhandene Verbindungszeichenfolge in das Debug- / Sofortfenster des Code-Editors gedruckt (falls dies noch nicht sichtbar ist, drücken Sie im Bildschirm des VBA-Code-Editors STRG-G, um die Sichtbarkeit des Sofortfensters umzuschalten, bevor Sie den Code ausführen.
Eine Warnung
Vergessen Sie wie immer nicht, dass das obige Codefragment Ihnen zwar helfen kann, Zeit zu sparen, wenn Sie die Datei ändern müssen, mit der eine Tabelle verknüpft ist. Es kann Ihnen jedoch nicht helfen, wenn Sie auf eines stoßen Zugriff auf DateischädenStellen Sie also sicher, dass Sie Backups aufbewahren und wissen, wohin Sie sich wenden müssen, wenn alles andere fehlschlägt.
Einführung des Autors:
Mitchell Pond ist ein Datenrettungsexperte in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich SQL-Schäden reparieren und Excel-Wiederherstellungssoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX