[[20160826101806]] 『セルの値を含むファイル名を探し、リンクを作成』(聖歌) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルの値を含むファイル名を探し、リンクを作成』(聖歌)

おはようございます。

A列(A2〜)に管理番号が入力されています。
フォルダパス:C:\MINT ここで、A列の値を含むファイル名を調べ、そのファイルへのリンクをC列(C2〜)に載せたいと思っています。

C:\MINT この中に日付のフォルダがあり、日付のフォルダの直下にファイルが格納されています。なので、サブフォルダまで検索をしてファイルパスを取得するマクロを教えていただけないでしょうか。宜しくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


日付フォルダの命名規則を教えてください。YYYYMMDDの8桁とかでしょうか?

また、A列に書かれた番号(文字列)に一致するファイルは、必ず1つでしょうか? もし複数該当した場合は、どう処理するのでしょう?

でもって、できれば過去ログを調べて、サブフォルダを含めたファイル一覧の方法を学び、まずは自分で作ってみて欲しいのですが…。そうして、判らない箇所が出てきて、どう調べても解決できないときに、ピンポイントでそこだけ質問して欲しいです。やりたいことだけ書いて、お願いします、というのは、丸投げといって、嫌われる行為です。
(???) 2016/08/26(金) 10:59


とりあえず、一致は1つだけと仮定して書いちゃいます。

 Sub test()
    Dim cFiles As Variant
    Dim i As Long
    Dim j As Long
    Dim cDim() As String

    cFiles = Split(CreateObject("WScript.Shell").Exec("CMD /C DIR /A:-D/B/S ""C:\MINT\*.*""").StdOut().ReadAll(), vbNewLine)

    ReDim cDim(UBound(cFiles) - 1)
    For i = 0 To UBound(cFiles) - 1
        cDim(i) = Mid(cFiles(i), InStrRev(cFiles(i), "\") + 1)
    Next i

    For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        For j = 0 To UBound(cDim)
            If cDim(j) Like "*" & Cells(i, "A").Value & "*" Then
                Cells(i, "C").Hyperlinks.Add Anchor:=Cells(i, "C"), Address:=cFiles(j), TextToDisplay:=cDim(j)
                Exit For
            End If
        Next j
    Next i
 End Sub
(???) 2016/08/26(金) 11:26

???様
遅くなりすみません、一致する文字列が重複しているかについてですが、同じ値のものはありません。
フォルダ名は「H28_08_26(山田)」となっております。
(山田)は固定です。また、ファイルは日付フォルダの直下に格納されていると書きましたが、
そうでない場合もあるようです……。申し訳ありません。
そうでない場合というのは、「H28_08_26(山田)」→「作成中」→「作成済」という風に、最後の作成済のフォルダに入っていたり作成中のフォルダに入っていることがあるようです。

C:\MINT より先のフォルダ名を指定せずサブフォルダを含んだ検索を行うことは可能でしょうか?
お手数をお掛けしてすみません。

(聖歌) 2016/08/26(金) 11:39


先頭がC:\MINT\であれば、その下はどうなっていても動くロジックにしてありますよ。まずは動かしてくださいな。
(???) 2016/08/26(金) 11:50

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.