Suchmakro für Autodesk Inventor

  • Sonstige

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Suchmakro für Autodesk Inventor

    Hallo,

    ich bin neu hier im Forum und etwas unerfahren. Hier erhoffe ich mir eine Hilfestellung von euch Experten für mein Problem:
    Ich möchte ein Makro programmieren, das einen festgelegten Ordner (C:\Bibliothek\) inclusive aller Unterordner durchsucht. Als Ergebnis soll eine Liste aller gefundenen Ordnernamen (nicht Dateien) ausgegeben werden. Diese sollen per Doppelklick geöffnet werden können.
    Ich hoffe, dass mir jemand weiterhelfen kann. :thumbsup:

    Vielen Dank schonmal im Voraus!

    Visual Basic-Quellcode

    1. Dim FolderList As Collection
    2. Dim FS As Object
    3. Sub ListFolder()
    4. Set FS = CreateObject("Scripting.FileSystemObject")
    5. Set FolderList = New Collection
    6. ListFolders "c:\Biblithek", "*gesucht*"
    7. End Sub
    8. Sub ListFolders(ByVal FolderString As String, Optional ByVal SearchString As String = "*")
    9. Dim Folder As Object
    10. If Not FS.FolderExists(FolderString) Then Exit Sub
    11. Set Folder = FS.GetFolder(FolderString)
    12. If Folder.Name Like SearchString Then FolderList.Add Folder.Path
    13. For Each SubFolder In Folder.SubFolders
    14. ListFolders SubFolder.Path, SearchString
    15. Next
    16. End Sub
    Müsste auch unter AutoDesk VBA laufen.
    Testen kann ich's nicht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Du hast in ​FolderList eine Collection aller gefundenen Verzeichnisse.
    Was du jetzt damit machst und wie du sie anzeigst, bleibt dir überlassen.
    Du kannst diese Liste z.B. als Bindingsource an eine Listbox binden.
    Oder auch einfach als String verketten.
    Beispiel:

    Visual Basic-Quellcode

    1. ​Sub DisplayFolders
    2. Dim FolderName as Object, s As string
    3. For Each FolderName in FolderList
    4. s = s & FolderName & vbCrLf
    5. Next
    6. MsgBox s
    7. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --