Makrothek
MS Access betrifft MS Access

Problembeschreibung:

Manchmal ist es notwendig, dass eine Tabelle mittels VBA verknüpft werden muss, weil der Verknüpfungsassistent von MS Access wiedereinmal nicht mit der Anzahl der Tabellen in einer externen Datenbank klar kommt, und so verhindert, dass die zu verknüpfende Tabelle ausgewählt werden kann.

Lösungsidee

Die Tabelle wird mittels VBA direkt verknüpft. Dazu muss der Pfad zur externen Datenbank, der Datenbanktyp und die Verknüpfungsinformationen bekannt sein. Diese Möglichkeit ist auch in der Onlinehilfe beschrieben (Stichwort: Connect (DAO))

Programmcode


  'Code zum Verknüpfen einer Tabelle über ODBC mittels VBA

  Dim db As Database
  Dim Tabellenname As String
  Dim Verbindungsinformation As String
  Dim Name_Quelltabelle As String
  Dim neue_Tabelle As TableDef

  'Beispiele für Verbindungsinformationen
  Tabellenname = "Meine_Tabelle"                'Name der Tabelle
  Name_Quelltabelle = "externe_Tabelle"         'Name der Originaltabelle

  'Beispiele
  'MS Access DB
  Verbindungsinformation = ";DATABASE=C:\Dokumente und Einstellungen\USER\Eigene Dateien\Datenbank.mdb"
  'ODBC-Verbindung (muss über die ODBC-Verwaltung in der Systemsteuerung existieren)
  'Verbindungsinformation = "ODBC;DSN=COMPUTER;Description=Beispieldatenbank;APP=Microsoft Office XP;WSID=SQLSERVER;DATABASE=MSSQL_DATENBANK;"
  'Excel-Tabelle (die Quelltabelle bezeichnet hier das Arbeitsblatt)
  'Verbindungsinformation = "Excel 5.0;DATABASE=C:\Dokumente und Einstellungen\user\Eigene Dateien\Tabelle.xls"
  'weitere Beispiele siehe Online-Hilfe

  'Datenbankobjekt ermitteln
  Set db = CurrentDb

  'Neues Tabellenobjekt anlegen
  Set neue_Tabelle = db.CreateTableDef
  neue_Tabelle.Name = Tabellenname                  'Tabellenname festlegen
  neue_Tabelle.Connect = Verbindungsinformation     'Verbindungsinformation festlegen
  neue_Tabelle.SourceTableName = Name_Quelltabelle  'Name der Quelltabelle
  'Tabelle anlegen
  db.TableDefs.Append neue_Tabelle
  db.TableDefs.Refresh

  'Speicher freigeben
  Set db = Nothing