dポイントプレゼントキャンペーン実施中!

お世話になります。
VBAでインプットボックスに
キーワードを入力して
部分一致したファイルを開きたいです。

ファイルのパスは
デスクトップの商品情報というフォルダ内に全てあります。
ファイル名が
コード_商品名_仕入先_単価.xslx
となっており、
コード若しくは仕入先を入力し
一致しているファイルを開きたいです。
仕入先で一致するものは最高で3つあります。

ご教授宜しくお願い致します。

質問者からの補足コメント

  • コードは半角英数で
    Fd2376-d12
    のような形です。
    半角数字と半角英字が混ざっていて
    桁数はばらばらです。

    仕入先名は
    山田株式会社で3件
    山田商会で3件
    といったような感じです。
    ただし山田ですと50件該当といったことはあり得るかもしれないので仕入先名はフルネームで入力すると思います。

    実行する前に開くファイル数は念のため確認できればありがたいです。
    宜しくお願い致します。

      補足日時:2017/02/20 01:52
  • 添付図のように一覧表示でお願い致します。
    宜しくお願い致します。

      補足日時:2017/02/20 14:12

A 回答 (3件)

以下のマクロを標準モジュールへ登録してください。


-------------------------------------------
Option Explicit
Public Sub ファイルオープン()
Const BookFolder As String = "C:\Users\xxxxxxx\Desktop\商品情報"
Dim key As String
Dim len1, len2 As Long
Dim fkey As String
Dim fname As String
Dim count As Long
Dim fnames() As String
Dim filestr As String
Dim ret As Long
Dim i As Long
key = InputBox("キーワードを入力してください")
If key = "" Then Exit Sub
len1 = Len(key)
len2 = LenB(StrConv(key, vbFromUnicode))
If len1 = len2 Then
'全て半角の場合、コードが指定されたと判断する
fkey = key & "*_*.xlsx"
Else
'全角が含まれる場合、仕入先が指定されたと判断する
fkey = "*_*" & key & "*_*.xlsx"
End If
fname = Dir(BookFolder & "\" & fkey)
If fname = "" Then
MsgBox ("該当ファイルなし")
Exit Sub
End If
count = 0
filestr = ""
'ファイル一覧取得
Do While fname <> ""
ReDim Preserve fnames(count)
fnames(count) = fname
count = count + 1
filestr = filestr & fname & vbCrLf
fname = Dir()
Loop
ret = MsgBox(filestr, vbOKCancel)
If ret <> vbOK Then Exit Sub
For i = 0 To UBound(fnames)
Workbooks.Open BookFolder & "\" & fnames(i)
Next
End Sub
-------------------------------------

Const BookFolder As String = "C:\Users\xxxxxxx\Desktop\商品情報"
が、商品情報のフォルダです。あなたの環境にあわせて適切に設定してください。
    • good
    • 0

補足ありがとうございました。


>実行する前に開くファイル数は念のため確認できればありがたいです。
この件ですが、添付の図のように、オープンする前に、一覧を表示し、OKがクリックされた場合、
一度にオープンすれば良いですか。
それとも、1つずつファイル名を表示し、そのファイル毎にオープンするかしないかを指定できるようにしますか?
「VBA、ファイル名検索から開く、部分一致」の回答画像2
    • good
    • 0

補足要求です。


1)コードのコード体系はどうなってますか。
(入力された値がコードなのか仕入先なのかを判別するために必要です)
2)仕入先で一致するものは最高で3つあります。
この意味は、例えば、仕入先として”山田”と入力すると
山田商会、山田商店、山田株式会社
のように、該当するものが、最大3つあるということですか?
    • good
    • 0

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

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