[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

OLE-Objekte automatisch in Tabelle einlesen

Sprache / Programm: Access ab Version 97
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

QuellPfad

Pfad und Dateierweiterung des einzulesenden Dateityps als String in der Form "Laufwerk:\Pfad\*.typ".

Der Dateityp muß registriert sein, d.h. es muß eine Anwenung installiert sein, welche diesen Dateityp öffnen kann.

ZielTab

Name der Access-Tabelle als String, in welche die OLE-Objekte eingefügt werden sollen.
Verwendete Variable

Datei

Enthält den Namen der aktuell bearbeiteten Datei
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.