[VBA] Dateiauswahldialog
lima-city → Forum → Programmiersprachen → Basic
abruf
anwender
auflistung
aufruf
beispiel
datei
dialogfelder
error
filter
listen
mu
ordner
resume
samt
set
spezialist
stehen
unterverzeichnis
verfgung
vergleich
-
Hi!
Ich hab für AutoCAD 2004 ein VBA-Makro geschrieben, das mit einer AutoCAD-Datei gewissen Vorgänge ausführt (was ist eigentlich irrelevant). Nun möchte ich, dass ich einfach 'ne Menge Dateien markieren kann, und dann das Makro für diese jeweils ausgeführt wird! Deshalb möchte ich wissen, wie man einen Dateiauswahldialog in VBA implementiert.
Also zweite "Auswahlmethode" möchte ich zur Verfügung stellen, dass der Anwender einen Ordner auswählen kann, und dieser dann anschließend samt aller Unterverzeichnisse nach DWGs durchsucht wird, und auf diese Dateien das Makro angewendet wird. Nur weiß ich nicht, wie man mit VBA eine rekursive Suche erstellt (da ich normalerweise mit Delphi arbeite).
Wäre für jegliche Antwort sehr dankbar! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich bin jetzt nicht unmittelbar der Spezialist, aber ich denke nicht das das mit VBA überhaupt geht, aber ich lasse mich gerne eines besseren beleheren, ich wüsste jetzt nicht wie und darum behaupte ich mal das geht nicht.
-
Doch! Das muß gehen! Irgendwie mit der Dir$-Funktion! Nur wie finde ich da die Unterverzeichnisse, und die einzelnen Dateien? Irgendwie hab' ich sowas schon mal geschafft!?
-
Hi. Dateiauswahldialogfelder stehen in VBA leider nicht zur Verfügung. Im Prinzip stehen dir gar keine Dialogfelder in VBA zur Verfügung, die du selbst verwenden kannst.
Hier ist ein Beispiel für eine rekursive Dateisuche, die dir eine Liste von Dateien zurückgibt. Du musst nur einen Ordner angeben. Es kann auch nur nach bestimmten Dateiendungen gesucht werden.
Code:
Option Explicit Private Sub ButtonSearch_Click() Dim Auflistung As String Auflistung = Auflistung & CreateFileList("A:\", False, ".htm") Auflistung = Auflistung & CreateFileList("B:\", False) Auflistung = Auflistung & CreateFileList("C:\", True, ".txt") Auflistung = Auflistung & CreateFileList("D:\", True) UserForm1.TextBox1.Text = Auflistung End Sub Function CreateFileList(ByVal StartFolder As String, ByVal IncluceSubFolders As Boolean, Optional ByVal ExtensionFilter As String = "") As String On Error Resume Next Dim mFileSystemObject As Object Dim mFolders As Object Dim mFolder As Object Dim mFiles As Object Dim mFile As Object Dim mList As String Set mFileSystemObject = CreateObject("Scripting.FileSystemObject") Set mFolder = mFileSystemObject.GetFolder(StartFolder) 'Dient dazu, dass das Programm weiterhin auf Benutzereingaben reagiert. Call VBA.DoEvents Set mFiles = mFolder.Files For Each mFile In mFiles 'Alle Dateien abrufen und mit Filter vergleichen If StrConv(mFile.Name, vbUpperCase) Like StrConv("*" & ExtensionFilter, vbUpperCase) Then mList = mList & mFile.Path & vbNewLine End If Next If IncluceSubFolders = True Then 'Ab hier rekursiver Aufruf für alle Unterverzeichnisse! Set mFolders = mFolder.SubFolders For Each mFolder In mFolders mList = mList & CreateFileList(mFolder.Path, IncluceSubFolders, ExtensionFilter) Next End If CreateFileList = mList End Function
-
Danke, cbhp. Genau so meinte ich das ja, dass ich meinen eigenen Dateiauswahldialog basteln muß! So wird's gehen!
Bitte closen ... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage