この人頭いいなと思ったエピソード

セル内に「CC569545」や「AA895266」といった文字列があります。
この文字列を含む「ASD_CC569545_M45.pdf」や「EDR_AA895266_kkkk.pdf」といった ファイルが、「C:\Temp」というフォルダにあるのですが、
このファイルに「自動的」 にリンクを張る方法はあるのでしょうか?
例えば、セルAに「CC569545」と入力すると、「C:\Temp」内の複数のファイルの中の 「CC569545」という文字列を含む「ASD_CC569545_M45.pdf」に自動的にリンクが設定されて、
これをクリックすると「ASD_CC569545_M45.pdf」が開くような方法を探しています。
フォルダ内には「CC569545」の文字列を含むファイルが複数存在することも考えられます。

もしくは、セルの「CC569545」をクリックすると、ウィンドウズの検索が実行されて、検索結果として「C:\Temp」の「CC569545」を含むファイルが検索結果として表示されるといった方法はあるでしょうか?

面倒な件ではありますが、ご教授頂ければ幸いです。

A 回答 (1件)

VBAの力が必要になりますが、大丈夫でしょうか。


http://oshiete1.goo.ne.jp/qa4478102.html
の方のスレのコードを利用させていただきました。
新しいブックを作成して 検索したいフォルダに一度保存してください。
A列に検索する文字を入れておきます。
 A
 CC569545
 AA895266
・・・
ツール=>マクロ=>VBエディター開いて 挿入=>標準モジュール
モジュールに以下をコピィします。

Sub macro1()
ThisWorkbook.Sheets(1).Range("B2") = "ファイル名"
ThisWorkbook.Sheets(1).Range("C2") = "ファイル種別"
ThisWorkbook.Sheets(1).Range("D2") = "最終更新日"
ThisWorkbook.Sheets(1).Range("E2") = "リンク"
Target = InputBox("ディレクトリ名を入力", "ディレクトリの指定", ThisWorkbook.Path)
Set FS = CreateObject("Scripting.FileSystemObject")
Set Fol = FS.GetFolder(Target)
Set Fil = Fol.Files
ThisWorkbook.Sheets(1).Rows("3:65536").ClearContents
i = 3
For j = 1 To Range("A65536").End(xlUp).Row
For Each fx In Fil
If fx.Name Like "*" & Cells(j, 1).Value & "*" Then
'ファイル名の書き出し
ThisWorkbook.Sheets(1).Cells(i, 2) = fx.Name
ThisWorkbook.Sheets(1).Cells(i, 6) = fx.Path
ThisWorkbook.Sheets(1).Cells(i, 5).FormulaR1C1 = "=HYPERLINK(RC[1],RC[-3])"
'ファイル種別
ThisWorkbook.Sheets(1).Cells(i, 3) = fx.Type
'最終更新日
ThisWorkbook.Sheets(1).Cells(i, 4) = fx.DateLastModified
i = i + 1
End If
Next
Next j
End Sub

VBエディター閉じて、マクロを実行
ツール=>マクロ macro1を実行します。
試してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報