• ベストアンサー

ExcelVBAのDir関数について。

下記の処理の流れで、「dir_check = Dir(f_name2)」の処理があります。ここで、Excelのファイル名を取得して変数として登録し、 きちんとファイル名が取得出来ていれば、結果抽出の処理を呼び出す 流れに持って行きたいのですが、値を代入できません。 ファイル名は、Excelの施設ファイル名シートのC列から取得して、 同じものを「f_name2」で取得したパスから探し出す仕組みです。 ファイルの有無は、文字数をカウントして結果が0以上ならファイルありの処理です。上手く流す処理の仕方を教えてください。 ご教示頂けますようお願い致します。 For nendo = 1 To 2 path = Worksheets("スタート").Cells(11, 4) path = path & Worksheets("スタート").Cells(8 + nendo - 1, 4) & "\" For shisetsu = 1 To 188 f_name1 = Worksheets("施設ファイル名").Cells(shisetsu + 1, 3) f_name2 = path & Worksheets("施設ファイル名").Cells(shisetsu + 1, 1) & "\" & f_name1 dir_check = Dir(f_name2) If Len(dir_check) > 0 Then dir_err(shisetsu, nendo) = 1 Workbooks.Open Filename:=f_name2 Call 結果抽出 Workbooks(f_name1).Close End If Next shisetsu Next nendo

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

#1です。 Dirの前で Debug.Print f_name2 を入れイミディエイトウィンドで確認することをお勧めします。 どこか想定と違うものが入っていると思います。 パス項目には path = IIf(Right(path,1) = "\",path,Paht & "\") のように保険をかけるのも一つの手です。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>f_name1 = Worksheets("施設ファイル名").Cells(shisetsu + 1, 3) ここで変数f_name1 には拡張子もついてますよね?

n_c63amg
質問者

補足

ご回答頂き有難う御座います。 f_name1に代入される値は、「f_name1="○×△.xls"」となります。 上記値は「施設ファイル名」シートのC列から取得しているものです。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

f_name2の内容はきちんとフルパスが設定されていますか。 path = Worksheets("スタート").Cells(11, 4) ここで"\"をつけてないのですが大丈夫ですか。

n_c63amg
質問者

補足

早速のご回答有難うございます。 ご指摘頂いた件ですが、 「スタート」のシート「D11」のセルに、パスを入力するようになっているのですが、ここへパスを入力した最後に\をつけるようになっています。 なので、この部分は上手くクリア出来ています。

関連するQ&A

専門家に質問してみよう