Benutzung auf eigene Gefahr ! |
Beschreibung |
Die Funktion liest OLE-Objekte in eine Access-Tabelle ein. Damit ist es möglich, z.B. komplette BMP, DOC, XLS oder CDR-Dateien in ein Datenbankfeld vom Typ 'OLE-Objekt' einzulesen und in Formularen wiederzugeben. Da hierfür kein Mechanismus existiert, wird dazu die VBA-Funktion SendKeys benutzt. Die Funktion ist zwar kreuzlahm (hängt von der Anwendung ab, die der Datei zugeordnet ist), aber wer schnell mal 500 Bilder für einen Katalog in Access einlesen muss wird sich für diese Funktion (und den gewonnenen Urlaubstag) herzlich bedanken. |
VBA-Quelltext |
Public Sub ObjekteEinlesen(QuellPfad As String, ZielTab As String) Dim Datei As String ' Zieltabelle zweispaltig erstellen: Dateiname und Objekt DoCmd.RunSQL "CREATE TABLE [" & ZielTab & "] ([DateiName] TEXT, [Objekt] LONGBINARY)" DoCmd.OpenTable ZielTab DoCmd.GoToRecord acTable, ZielTab, acNewRec ' Einzelne Objekte holen und einfügen Datei = Dir(QuellPfad) QuellPfad = Left(QuellPfad, InStr(1, QuellPfad, "*") - 1) While Datei <> "" SendKeys Datei & "{TAB} %EO%tD" & QuellPfad & Datei & "~{TAB}", True Datei = Dir() DoEvents ' Betriebssystemereignisse verarbeiten Wend ' Zieltabelle schließen DoCmd.Close acTable, ZielTab, acSaveYes End Sub |
Argumente der Funktion/Prozedur |
|
Verwendete Variable |
|
Anwendungsbeispiel(e)... |
ObjekteEinlesen("D:\Daten\A*.doc", "DocTab") erstellt in ACCESS die Tabelle [DocTab] mit den voreingestellten Spaltennamen [DateiName] als Text und [Objekt] als OLE-Feld. Aus dem Verzeichnis "D:\Daten\" werden alle Dateien, die mit 'A' beginnen und vom Typ '*.doc' sind, geöffnet (z.B. mit Word) und in die Tabelle [DocTab] eingefügt. |
Anwendungsgebiete, Fehler und Warnungen |
SendKeys übergibt Tastatureingaben. Die Tastencodes sind von der Sprachversion und von der Access-Version (hier Access 97) abhängig. Auf einem älteren / neueren ACCESS wird dieses Programm wahrscheinlich nicht mehr laufen. Die Funktion erstellt jedesmal eine neue Tabelle. Falls die angegebene Tabelle existiert, tritt ein Fehler auf. Die Dateien selbst können nur auf Rechnern ausgelesen werden, die das Anwendungsprogramm für die Datei besitzen. XLS-Dateien wären also nur auf Rechnern mit Excel auslesbar. |