1 1 1 1 1 1 1 1 1 1 Rating 5.00 (2 Votes)

 Problemstellung:

Nur für 32Bit Office Versionen

Einlesen von Dateien, mit ohne ohne Unterverzeichnissen und Filterfunktion.

Voraussetzungen:
Das Bsp ist ab A00lauffähig.

Funktionsweise:
Zur Funktionsfähigkeit wird die VBEx32.DLL benötigt. Diese muss sich im WindowsSystem-Verzeichnis befinden und muss nicht registiert werden.

Desweiteren kommt in der Bsp-DB das ActiveX-Control sevListbox zum Einsatz.
Dieses Control wurde bei Installation registriert.
Es ist aber nur für das DEMO hier erforderlich, da man im Control komfortabel Spalten sortieren
kann und auch die Spaltenbreite automatisch angepasst wird.

Die Sub ReadFilesArray liest alle Dateien ein und schreibt diese in die Tabelle tbl_Files.
Dafür werden einige Funktionen der VBEx32.DLL aufgerufen.

Public Sub ReadFilesArray(strFolder As String, Optional intSubfolder As Integer = 0, _
                          Optional strFilter As String = "*.*")
'*******************************************
'Name:      ReadFilesArray   (Sub) benötigt die VBEx32.DLL
'Purpose:   Ermittelt alle Dateien aus einem Verzeichnis und schreibt diese in ein Array
'Author:    Thomas Keßler
'Date:      Januar 26, 2003, 09:01:34
'Inputs:    strFolder=Pfad, intSubfolder=mit Subfolder=1 ohne=0
'           strFilter=Dateifilter setzen
'Output:
'*******************************************

Dim db As DAO.Database, rs As DAO.Recordset
Dim varElement As Variant
Dim lCount As Long
Dim nBytes As Currency

' Löscht den Inhalt der Tabelle "tbl_Files"
CurrentDb.Execute "DELETE * FROM tbl_Files;"

' zunächst Anzahl Dateien ermitteln
lCount = VBEX_FileCount(strFolder, intSubfolder, strFilter, nBytes)

    If lCount = -1 Then
        MsgBox "Keine Dateien enthalten, keine CD eingelegt oder Laufwerk nicht bereit." & vbNewLine & _
               "Bitte legen Sie eine CD ein", vbCritical + vbOKOnly, "Fehler..."
        Exit Sub
    Else
        ' Array dimensionieren
        ReDim sFiles(lCount) As String
        
        ' Dateinamen ermitteln
        lCount = VBEX_FileList(strFolder, intSubfolder, strFilter, sFiles(), nBytes)

        'Neuen Inhalt in die Tabelle übertragen...
        Set db = CurrentDb()
        Set rs = db.OpenRecordset("tbl_Files", dbOpenDynaset)
        DoCmd.Echo False, "Bitte warten..., die Tabelle 'Files' wird mit Daten gefüllt"
        For Each varElement In sFiles()
            rs.AddNew
            rs("Datei") = strFolder & varElement
            rs("Dateigrösse") = FileLen(strFolder & varElement)
            rs("Dateidatum") = FileDateTime(strFolder & varElement)
            If GetAttr(strFolder & varElement) And vbReadOnly Then rs("ReadOnly") = -1
            If GetAttr(strFolder & varElement) And vbHidden Then rs("Hidden") = -1
            If GetAttr(strFolder & varElement) And vbSystem Then rs("System") = -1
            If GetAttr(strFolder & varElement) And vbArchive Then rs("Archiv") = -1
            If GetAttr(strFolder & varElement) And 2048 Then rs("Komprimiert") = -1
            rs.Update
            DoEvents
        Next
    End If
    DoCmd.Echo True
    MsgBox "Es wurden " & lCount + 1 & " Dateien eingelesen.", vbInformation + vbOKOnly, "Erfolg"
    rs.Close
    db.Close

End Sub



Folgende Werte werden ermittelt und in die DB geschrieben: 1. kompletter Pfad und Dateiname
2. Dateigrösse in Bytes
3. Dateidatum
4. Die Attribute "ReadOnly", "Versteckt", "System", "Archiv" und "Komprimiert"

Im Formular wird oben als erstes ein Verzeichnis gewählt:

Im nächsten Schritt wird in der Optionsgruppe fesgelegt ob nur das angegebene Verzeichnis einlesen wird oder einschließlich vorhandener Unterverzeichnisse.

Dann erfolgt die Eingabe des Filters.
Bei Nichteingabe wird der Standardwert "*.*" gesetzt.
Es sind aber ein paar Dinge zubeachten die vom Standard der Wildcards abweichen:

Mögliche Eingaben wären z.B.:
*.* ist der Standarwert und liest alle Dateien ein
*.zip würde alle Zip-Dateien einlesen
test*.xls würde alle Excel-Dateien einlesen, die mit test.. beginnen.
?est*.xls würde alle Excel-Dateien einlesen, die mit est.. beginnen, z.B. test..., pest...
Nicht gelesen würde aber ppest... hier müsste ??est*.xls gesetzt werden.
*.md* würde alle Access Dateien, mdb, mda, mde usw. einlesen

Mit einem Klick auf den Button "Dateien Einlesen" erfolgt das Einlesen.

Im Listenfeld erfolgt dann die Ausgabe des Ergebnisses:
Die Spaltenbreite passt sich automatisch dem breitesten Eintrag an
Mit einem Klick auf den Spaltenkopf lässt sich jede Spalte sortieren.

 

Dateien:
(2 Stimmen)

Nur für 32Bit Office Versionen

Einlesen von Dateien, mit oder ohne Unterverzeichnissen und Filterfunktion
in eine MS-Access Datenbank

ab A00

Der Download ist eine Setup.exe
Datum 05.02.2018
Dateigröße 335.78 KB
Download 6.268

 

Ähnliche Artikel

You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool...
1.png6.png5.png3.png0.png8.png0.png
Heute53
Gestern235
Diese Woche1020
Dieser Monat1262
Total1653080

  • IP: 18.97.14.82
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

06. Dezember 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...