こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

ファイルを検索するマクロで教えて下さい

質問No.9060575で下記のような質問をさせて頂きました。

↓↓↓↓↓↓↓↓
ファイルを選択するマクロを教えてください。

ブックAのシートA セルA1に100という数字が入力されています。

C:\Users\Documents のフォルダの中に

シート選択#100.xlsm
シート選択#101.xlsm
シート選択#102.xlsm
シート選択#103.xlsm
シート選択#104.xlsm

というシートがあるとします。

やりたいことはセルA1に数字が入力されている状態でマクロ実行ボタンを押した時
C:\Users\Documentsのフォルダの中にあるシート選択#100.xlsmのシートを開きたいです。

セルA1が101ならシート選択#101.xlsmを開く。

またセルA1になにも入力されていない場合はメッセージで
[入力されていません]
入力されていてもフォルダ内に当てはまる番号がない場合は
[ヒットするNo.がありません]
みたいな感じでメッセージを表示したいです。

宜しくお願いします。
↑↑↑↑↑↑↑↑

この質問で回答をもらい、解決できましたが
ここにプラスαで、もしA2セルに999と入力されていて
C:\Users\Documents のフォルダの中に

シート選択#100#999.xlsm
というシートや
シート選択#101#995.xlsm
というシートがある場合はどのようにすればよろしいでしょうか?

前回と同じく100や999の部分はランダムに変わります。
前回のベストアンサーを載せておきます。

■VBAコード
Sub file_open()
Dim f_fmt As String, i As Integer
'設定==============
  Const dpath As String = "C:\Users\Documents\"
  Const adr As String = "A1"
  Const st As String = "シートA"
  f_fmt = "#<NO>\シート選択#<NO>.xlsm"
'==================
  If Len(Range(adr).Value) = 0 Then MsgBox "入力されていません": Exit Sub
  f_fmt = dpath & Replace(f_fmt, "<NO>", Range(adr).Value)
  If Dir(f_fmt) = "" Then MsgBox "ヒットするNo.がありません": Exit Sub
  Workbooks.Open Filename:=f_fmt
  For i = 1 To Worksheets.Count
    If Worksheets(i).Name = st Then
      Worksheets(i).Activate
      Exit Sub
    End If
  Next i
  MsgBox "ワークブック """ & Dir(f_fmt) & """ に、ワークシート """ & st & """ が見つかりません"
End Sub

投稿日時 - 2016-01-15 13:10:11

QNo.9111644

すぐに回答ほしいです

質問者が選んだベストアンサー

こんにちは
コードお借りすると、
Sub file_open()
  Dim f_fmt As String, i As Integer
'設定==============
  Const dpath As String = "C:\Users\Documents\"
  Const adr As String = "A1"
  Const adr1 As String = "A2"
  Const st As String = "シートA"
  f_fmt = "#<NO>\シート選択#<NO1>.xlsm"
'==================
  If Len(Range(adr).Value) = 0 Then MsgBox "セルA1入力されていません": Exit Sub
  If Len(Range(adr1).Value) = 0 Then MsgBox "セルA2入力されていません": Exit Sub
  f_fmt = dpath & Replace(f_fmt, "<NO>", Range(adr).Value)
  f_fmt = dpath & Replace(f_fmt, "<NO1>", Range(adr1).Value)
  If Dir(f_fmt) = "" Then MsgBox "ヒットするNo.がありません": Exit Sub
  Workbooks.Open Filename:=f_fmt
  For i = 1 To Worksheets.Count
    If Worksheets(i).Name = st Then
      Worksheets(i).Activate
      Exit Sub
    End If
  Next i
  MsgBox "ワークブック """ & Dir(f_fmt) & """ に、ワークシート """ & st & """ が見つかりません"
End Sub
こんな感じでしょうか?

投稿日時 - 2016-01-15 15:29:39

お礼

お礼が遅くなりすみません。

頂いたマクロで、目的が達成できました!
ありがとうございました!

投稿日時 - 2016-01-21 19:18:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

>C:\Users\Documentsのフォルダの中にあるシート選択#100.xlsmのシートを開きたいです。

状況のご説明とサンプルマクロの内容が合っていません。
間違ったご説明では、動かないマクロの回答しか寄せられません。お互いの手間の無駄ですよ。


sub macro1()
 dim myPath as string
 dim myFile as string
 mypath = "C:\Users\Documents\"

 if range("A1") = "" then
  msgbox "A1 is blank"
  exit sub
 end if

 myfile = "シート選択#" & range("A1").value & iif(range("A2") = "", "", "#" & range("A2").value) & ".xlsm"
 myfile = dir(mypath & myfile)
 if myfile = "" then
  msgbox "file not exist"
  exit sub
 end if

 workbooks.open filename = mypath & myfile
end sub

投稿日時 - 2016-01-16 09:12:19

お礼

お礼が遅くなり申し訳ありません。

質問の仕方が違っていたという事で大変お手数をお掛け致しました。
今後は気を付けます。
ありがとうございました!

投稿日時 - 2016-01-21 19:20:00

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-