0

このスクリプトを使用して、メイン ディレクトリのメイン パスで特定の文字列 (この場合は 300) を持つサブフォルダーを見つけます。

Sub Find_SubFolder()
Dim sFile As String, sPathSeek As String, sPathMatch As String

Const sMainPath As String = "C:\Users\502158766\Desktop\testje\"

On Error Resume Next
sPathSeek = sMainPath & 300 & " " & "*"
sFile = Dir(sPathSeek, vbDirectory)

Do While Len(sFile) > 0
    If Left(sFile, 1) <> "." Then
        If (GetAttr(sFile) And vbDirectory) = vbDirectory Then
            sPathMatch = sFile
            Exit Do
        End If
    End If
    sFile = Dir
Loop

MsgBox IIf(sPathMatch = "", "Match not found", "Found in: " & sMainPath & sPathMatch)
Call Shell("explorer.exe " & sMainPath & sPathMatch, vbNormalFocus)
End Sub

メインディレクトリから始まるすべてのサブフォルダーをチェックして同じことを実行できるようにするこのスクリプトのアップグレードを探しています(300を含むフォルダーを検索して開きます)さらに、スクリプトは最上位のサブフォルダーを開く必要があります。

例: 私のメイン ディレクトリには、次のマップが格納されています。

C:\Users\502158766\Desktop\testje\fruit\apples\30 greens\30 fromENG

C:\Users\502158766\Desktop\testje\fruit\apples\30 greens\30 fromUSA

C:\Users\502158766\Desktop\testje\fruit\apples\30 greens\30 fromBELG

C:\Users\502158766\Desktop\testje\fruit\apples\30 greens\30 fromNL

C:\Users\502158766\Desktop\testje\fruit\apples\30 greens\30 fromCYP

C:\Users\502158766\Desktop\testje\fruit\banana\15 greens\15 fromENG

C:\Users\502158766\Desktop\testje\fruit\banana\15 greens\15 fromUSA

C:\Users\502158766\Desktop\testje\fruit\banana\10 greens\15 fromBELG

C:\Users\502158766\Desktop\testje\fruit\banana\20 greens\15 fromNL

C:\Users\502158766\Desktop\testje\fruit\banana\50 greens\15 fromCYP

スクリプトは、30 がパス シークの場合に備えて、30 グリーン マップを開く必要があります。15 がパス シークの場合は、15 のグリーン マップを開く必要がありますが、他のマップは開きません。

昨日試してみたところ、メインディレクトリのすべてのフォルダーを開き、テキストの組み合わせを使用して、最上位のサブフォルダーへのハイパーリンクを列にたどる方法を見つけました。ただし、多くのファイルが原因でスクリプトがクラッシュするのは本当に面倒でした。

私の質問が明確であることを願っています。どうもありがとうございました!

4

1 に答える 1

0

こちらをご覧ください。それはほとんど動作します。「GetAttr(sFile)」を呼び出すときに、SFileにapthを追加する必要があると思います

于 2014-05-21T20:46:48.650 に答える