1 1 1 1 1 1 1 1 1 1 Rating 4.17 (3 Votes)

Problemstellung:

Nur für 32Bit Office Versionen

In diesem Bsp hatte ich gezeigt wie ihr mittels der vbex32.dll Dateien in eine MS-Access DB eingelesen werden können.
Nun war aus den Kommentaren zu entnehmen das diese Lösung Schwierigkeiten mit großen Dateimengen hat.
Also habe ich selbst eine DLL geschrieben, die wie ich hoffe, dieses Manko behebt.
Gerade unter A2007 wo die"Application.FileSearch-Methode" fehltist diese DLL ein wichtiges Hilsmittel.
Es sind noch ein paar andere Sachen in dieser DLL integriert, zu denen ich noch komme.

Voraussetzungen:
Das Bsp ist ab A00 lauffähig.
Getestet unter WinXP, Win Vista 32Bit und Win7 64Bit
Die "tk_FileFunc.dll" ist eine VB6 ActiveX-DLL deshalb muss diese im System registriert werden.
Das übernimmt das Setup des Downloads.
Bei manueller Weitergabe muss die "tk_FileFunc.dll" mittels regsvr32.exe im System registriert werden.

 
Funktionsweise:
Folgende Funktionen sind in der DLL derzeit vorhanden:
 
- kompletter Datei- und Verzeichnis Dialog
- Suchen und Einlesen von Dateien mit und ohne Unterverzeichnissen und Wildcards
- Dateifunktionen wie Kopieren, Verschieben und Löschen auf API-Basis
- Verzeichnisse anlegen auch mit mehreren Unterverzeichnissen.
 
Dafür sind in der DLL 3 Klassen enthalten:
 
- cls_FileDialogDatei- und Verzeichnis Dialog
- cls_ListFilesSuchen und Einlesen von Dateien mit und ohne Unterverzeichnissen und Wildcards
- cls_FileFuncDateifunktionen wie Kopieren, Verschieben und Löschen auf API-Basis, Verzeichnisse anlegen
Zuerst muss die DLL per Verweis in die DB eingefügt werden
 
 
1. Datei- und Verzeichnis Dialog
 
Hier ein Bsp zum Aufruf des Verzeichnisauswahl Dialogs:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Private Sub cmd_Folder_Click()
    Dim cFD As New cls_FileDialog
    Dim sFolder As String
    With cFD
        .DialogTitle = "Bitte Startverzeichnis wählen"
        .ShowFolder
        sFolder = .FileName
        If .FileName = "" Then Exit Sub
    End With
End Sub
 
oder Datei Öffnen Dialog:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Private Sub cmd_Folder_Click()
    Dim cFD As New cls_FileDialog
    Dim sFile As String
    
    With cFD
        .DialogTitle = "Datei öffnen"
        .DefaultDir = "C:\"
        .DefaultExt = "*.mdb"
        .Filter1Text = "Access-Datenbanken"
        .Filter1Suffix = "*.mdb"
        .ShowOpen sFile = .FileName
        If .FileName = "" Then Exit Sub
    End With
End Sub
Alle weiteren Möglichkeiten können dem Objektkatalog entnommen werden.
 
2. Suchen und Einlesen von Dateien mit und ohne Unterverzeichnissen und Wildcards
 
Kommen wir zum Kernstück der DLL.
Die Klasse cls_ListFiles  dient zum Einlesen der Dateien.
Wobei das Suchergebnis in einer Collection zurück gegeben wird.
In der Bsp-DB wird ein Listview mit dem Ergebnis gefüllt. Ihr könnt aber
genauso ein Listenfeld mittels Wertliste über die AddItem-Methode (ab AXP) füllen.
Hier ist aber darauf zuachten das bei der Werliste bei 4096 Zeichen Schluss ist und
somit bei vielen Dateien zu einer Fehlermeldung führt.
 
So könnte ein Aufruf aussehen:
Es werden alle Datei im Verzeichnis "D:\Daten" inklusive alle Unterverzeichnisse eingelesen.
1
2
3
4
5
Private Sub cmd_Folder_Click() 
Dim cLFs As New cls_ListFiles 
Dim x 
x = cLFs.ListFiles("D:\Daten", "*.*",True) 
End Sub
Über die Eigenschaft "Count" kann die Anzahl der gefundenen Dateien zurück gegeben werden.
MsgBox "Es wurden " & cLFs.Col_File.count & " Dateien nach den Kriterien gefunden"
 
 
In der Bsp.-DB ist es etwas komfortabler :
 
 
Hier sähe der Code dann so aus:
Private Sub cmd_Folder_Click()
    Dim sFolder As String
    Dim sFilter As String
    Dim x
    Dim i As Long

    With cFD
        .DialogTitle = "Bitte Startverzeichnis wählen"
        .ShowFolder
        sFolder = .FileName
        If .FileName = "" Then Exit Sub
    End With
    With oListView
        .ListItems.Clear
        .Refresh
    End With
    If IsNull(Me.txt_Filter) Then
        sFilter = "*.*"
    Else
        sFilter = Me.txt_Filter
    End If

    x = cLFs.ListFiles(sFolder, sFilter, Me.chk_SubFolder)

    MsgBox "Es wurden " & cLFs.Col_File.count & " Dateien nach den Kriterien gefunden"
    For i = 1 To cLFs.Col_File.count
        Set objListItem = oListView.ListItems.Add(, "a" & i, cLFs.Col_File(i))
    Next i
End Sub
Die For-Next Schleife am Ende durchläuft die Collection und fügt die Einträge dem Listview hinzu. 

 
Dateien:
(0 Stimmen)

Nur für 32Bit Office Versionen

Bsp-DB zur Benutzung der tk_FileFunc.dll

Setup enthält folgende Dateien:

tk_FileList.mdb
tkFileFunc.dll
 
ab A00
Datum 05.02.2018
Dateigröße 329.6 KB
Download 1.956
 

Ä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.png5.png7.png8.png8.png4.png6.png
Heute364
Gestern271
Diese Woche1195
Dieser Monat7469
Total1578846

  • IP: 44.211.117.101
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

28. März 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...