Anzeige
Archiv - Navigation
1000to1004
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

geschenkt

geschenkt
10.08.2008 01:21:00
Tino
Hallo Forum,
da ich etwas lange weile hatte, habe ich mal eine *.dll unter VB6 erstellt.
Diese dll soll vor allem die fehlende in Application.FileSearch in Office 2007 ersetzen,
weil es diese wie bekannt nicht mehr gibt, diese kann aber auch in anderen Versionen verwendet werden.
Damit kann man sich einiges an Codezeilen in seinem Projekt sparen.
Beispiele zur Deklarierung und Verwendung siehe Beispiele unten.
Um diese in Deinem Projekt einzubinden, gehe im VBA-Editor unter
Extras- Verweise… und füge diese über Durchsuchen… ein.
überprüfe nochmals die Aktivierung der FindMeFile.dll.
Ganz unten findest Du noch wie dies mit VBA erledigt werden kann,
dazu muss der Zugriff auf VBA Projekte vertraut werden.
Die Rückgabe aus der *.dll ist eine mehrdimensionale Area
Hier ein bar Beispiele zur Verwendung

Sub DemoVersion1()
'die Deklarierung
Dim objMeFile As New FindMeFile.SuchFils
'für die Rückgabe
Dim ArFile()
'sonstige Deklarierung
Dim A As Long
Application.ScreenUpdating = False
Cells.Clear
'hier erfolgt die Abfrage aus der FindMeFile.dll
'optionale Parameter müssen nicht angegeben werden.
'1. Parameter- Suchordner (String)
'2. Parameter- Suchfile (String) * als Platzhalter
'3. Parameter- Suche in Unterordner (Optional Boolean)
'4. Parameter- Sortieren nach Erstelldatum (Optional Boolean)
'   dieser Parameter benögigt mehr Zeit
ArFile = objMeFile.MeExcelSuche("C:\Anwendungsdaten", "*", True, False)
'Beipiel zur Verwendung der Area
'in diesem Beispiel
'A ist die Position in der Matrix
'Die Werte 0=Pfad; 1=Dateiname; 2=Erstelldatum
If Not IsEmpty(ArFile(0, 0)) Then 'was gefunden?
For A = LBound(ArFile) To UBound(ArFile)
Cells(A + 1, 1) = ArFile(A, 0) 'Pfad
Cells(A + 1, 2) = ArFile(A, 1) 'Datei
Cells(A + 1, 3) = ArFile(A, 2) 'Datum Erstellt
Next A
End If
Application.ScreenUpdating = True
End Sub



Sub DemoVersion2() 'Beschreibung siehe Version1
Dim objMeFile As Object
Dim ArFile()
Dim A As Long
Set objMeFile = CreateObject("FindMeFile.SuchFils")
Application.ScreenUpdating = False
Cells.Clear
ArFile = objMeFile.MeExcelSuche("C:\Anwendungsdaten\", "*", True, True)
If Not IsEmpty(ArFile(0, 0)) Then
For A = LBound(ArFile) To UBound(ArFile)
Cells(A + 1, 1) = ArFile(A, 0) 'Pfad
Cells(A + 1, 2) = ArFile(A, 1) 'Datei
Cells(A + 1, 3) = ArFile(A, 2) 'Datum Erstellt
Next A
End If
Application.ScreenUpdating = True
Set objMeFile = Nothing
End Sub


'Registrierung der FindFile.dll mit VBA,
'Zugriff auf VBA Projekte muss vertraut werden


Sub regestrieren()
Dim DllPath As String
DllPath = _
IIf(Right$(ThisWorkbook.Path, 1) = "\", _
ThisWorkbook.Path & "FindFile.dll", _
ThisWorkbook.Path & "\FindFile.dll")
Shell "regsvr32 /s " & Chr(34) & DllPath & Chr(34)
ThisWorkbook.VBProject.references.AddFromFile (DllPath)
End Sub



Sub deregistrieren()
Dim DllPath As String
DllPath = _
IIf(Right$(ThisWorkbook.Path, 1) = "\", _
ThisWorkbook.Path & "FindFile.dll", _
ThisWorkbook.Path & "\FindFile.dll")
On Error Resume Next
ThisWorkbook.VBProject.references.Remove _
ThisWorkbook.VBProject.references("FindMeFile")
Shell "regsvr32 /s /u " & Chr(34) & DllPath & Chr(34)
End Sub


Hier die FindFile.dll als *.zip
https://www.herber.de/bbs/user/54476.zip
Viel Spaß damit.
PS: über eine Rückmeldung würde ich mich freuen.
Gruß Tino

www.VBA-Excel.de


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: geschenkt
10.08.2008 08:42:00
Nepumuk
Hallo Tino,
interessanter wäre natürlich der Code. Kaum jemand darf in seiner Firma eine DLL ohne Zertifikat installieren. Aber die Klassen in ein Addin zu verfrachten und darin zu benutzen kann jeder.
Gruß
Nepumuk

AW: geschenkt
10.08.2008 09:55:25
Tino
Hallo Nepumuk,
vor deinen VBA Künsten ziehe ich meinen Hut, aber aus diesem Grund habe ich eine solche Rückmeldung von Dir auch erwartet. ;-)
Der Code der zum Einsatz kommt, kann man mit etwas stöbern im Archiv sich selbst zusammenbasteln und sich ein entsprechendes Addin erstellen.
Mein Hintergedanke war eher, weil nicht jeder ein entsprechendes Programm zum erstellen solcher dll Dateien besitzt, eine fertige dll zu erstellen.
Nicht viele habe die rechte solch eine dll einzubinden, aber ich gehe mal davon aus dass es genau so viele gibt die diese rechte besitzen.
Hat man die nötigen rechte, braucht man nur diese dll einbinden und man kann mit einem Einzeiler
(von der Deklarierung abgesehen) eine Ordnerabfrage starten.
Jeder weis wahrscheinlich wie viel Codezeilen nötig sind (in 2007), um einen Ordner mit Unterordner nach Dateien zu durchsuchen.
Schlussfolge.
Derjenige der dies für sich als nützlich betrachtet und auch einbinden kann, kann diese frei verwenden und soll spaß damit haben.
Gruß Tino

Anzeige
OT: ;-))
10.08.2008 11:35:00
{Boris}
Hi Tino,
Nicht viele habe die rechte solch eine dll einzubinden, aber ich gehe mal davon aus dass es genau so viele gibt die diese rechte besitzen.
Fällt´s Dir auf? ;-))
Grüße Boris

AW: OT: ;-))
10.08.2008 11:52:00
Tino
Hallo,
mir fällt es auf, unglücklich ausgedrückt, Schulnote 6 setzen.
Bestimmt weist du aber wie es gemeint ist.
Es gibt viele die diese Rechte nicht haben und es gibt genau so viele die diese Rechte besitzen ;-)
Gruß Tino

AW: geschenkt
10.08.2008 09:33:35
Luschi
Hallo Tino,
was sagt denn Vista zu der VB6-dll, das FileSearch-Objekt wird ja nicht aus purer Laune von M$ vergessen worden sein.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: geschenkt
10.08.2008 10:00:00
Tino
Hallo Luschi,
habe dies unter Vista mit Office 2007 und XP mit Office 2003 erfolgreich getestet.
Application.FileSearch kommt hier nicht zum Einsatz.
Gruß Tino

Ersatz für Application.FileSearch
10.08.2008 13:58:00
Tino
Hallo,
bevor dieser Beitrag in den unendlichen Weiten des Archivs verschwindet, wollte ich diesen auf offen stellen.
Vielleicht findet einer dies doch interessant und gibt Rückmeldung über Erfolg oder Misserfolg.
Eventuell gibt es auch Rückmeldungen zwecks Erweiterungen die unbedingt eingebaut werden sollten.
Gruß Tino

www.VBA-Excel.de


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige