• 締切済み

プログラミング初心者です。どなたかご教授頂けないでしょうか。

プログラミング初心者です。どなたかご教授頂けないでしょうか。 VBAで、ファイル名をチェックする方法が知りたいです。 ◆前提条件 ・フォルダ構成 C:\Documents and Settings\デスクトップ\フォルダ1\ファイル1.xls |_フォルダ2\ファイル2.xls |_フォルダ3\ファイル3.xls ◆マクロで実現させたいこと ・ファイル1~ファイル3全てのファイル名チェックを行いたい。 ・正しいファイル名【ファイル1_XXについて.xls】 ・ファイル1、2、3・・・と続く ・_アンダーバーが必ず入っていること ・”XXについて”の箇所はチェックをしない ・.xlsが必ずついていること 申し訳ありませんがお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

これも初心者を理由の丸投げの質問だ。 ファイルの名前が判ったとして、名前のチェックのコードぐらい自分で書いてみるべきだ。 在るフォルダのファイルで、エクセルファイル(拡張子.xls)を全て調べ(3つしかないのは確実か?) そのファイル名について、質問のようなチェックをする。 チェックの部分は質問者でも判るだろう。正規表現やワイルドカードがどうとか言うレベルでないなら、 >正しいファイル名【ファイル1_XXについて.xls】 は3つのファイルのどれかであるか。見つからないか。余分なXLSがあるか。 をIF文でチェックする。とりあえずブック名文字列を配列にでも入れて、入れ終わったら ファイル1.xlsはその中にあるかファイル2.xlsはあるか、1ツづつIF文で聞いていけば良い。 >_アンダーバーが必ず入っていること Instr関数を使うことーー>WEB照会 .xlsが付いていることにも使える。 >.xlsが必ずついていること フォルダの中から、.xlsが付いているファイルのみチェックの対象にする、方が良いのかな。 フォルダの全ファイルに質問のようなチェックを掛けるよりも。 ーーー フォルダの中のファイル名を捉えるのは Googleで「VBA フォルダ ファイル名」で照会 ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html など Dir関数を使う、FSOを使う、の2方法のどちらかが多い。 .xlsは文字列の末尾4文字が.xlsかチェック。LEFT関数などーー>WEB照会。

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

先ずファイルを検索する方法は以下の通り Dim F, D, E, X, N Set F = CreateObject("Scripting.FileSystemObject") Set D = F.GetFolder("C:\Documents and Settings\デスクトップ") For Each E In D.SubFolders     ChDir E.Path     N = E.Name '★フォルダ名     X = Dir("*.xls")     Do Until X = ""         ファイル名チェック         X = Dir     Loop Next 次にファイル名の正当性ですが、これが少し不明です。 可変部分についてどのような規則なのかハッキリしないのですが、 以下のルールを考えてみました。 (1)先頭の4文字は「ファイル」である。 (2)その直後は半角の数字が複数ある。 (3)数字の後ろには「_」(下線)がある。 (4)「_」(下線)より拡張子までは任意である。 (5)拡張子は「.xls」に限る。 上記の(5)は最初のDir関数が識別するので特に考えなくて よいでしょう。それ以外は正規表現を使います。 Dim R Set R = CreateObject("VBScript.RegExp") R.Pattern = "^ファイル\d+_.*\.xls" If Not R.Test(文字列) Then     パターンに一致していない場合の処理 End If

すると、全ての回答が全文表示されます。
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 0085 さんのなさりたいことは、 ------------------------------------------------- 「C:\Documents and Settings\デスクトップ\」配下の全ての フォルダ から ・ファイル名 に「ファイル1」・「_」・「.xls」を含む ・ファイル名 に「ファイル2」・「_」・「.xls」を含む ・ファイル名 に「ファイル3」・「_」・「.xls」を含む のいずれかの条件を満たす ファイル を リストアップ する ------------------------------------------------- ということでしょうか?  だとして、下記のようなことで可能かと。。。 1)VBE(Visual Basic Editor)の コードウィンドウ に「filesearch」と入力し [F1] キー を押下します。 2)[Offile] - [FileSearch オブジェクト] を選択し [ヘルプ(H)] を クリック します。 3)[FileSearch オブジェクト] の ヘルプ の説明文中の「NewSearch メソッド」を クリック します。 4)[NewSearch メソッド] の ヘルプ の [使用例] に書かれた コード を VBE の コードウィンドウ にコピペし、不明な プロパティ などに マウス を合わせて [F1] キー を押下し、それぞれの意味を調べます。 5)いろいろと弄くって、下記のような コード に変更します。 Sub test()  Dim strFileNames As Variant  Dim i As Long  Dim j As Long  strFileNames = Array("ファイル1", "ファイル2", "ファイル3")  With Application.FileSearch   .NewSearch   .LookIn = "C:\Documents and Settings\デスクトップ\"   .SearchSubFolders = True   .Filename = "*_*.xls"   .FileType = msoFileTypeExcelWorkbooks   If .Execute() > 0 Then    For i = 1 To .FoundFiles.Count     For j = 0 To UBound(strFileNames)      If InStr(.FoundFiles(i), strFileNames(j)) > 0 Then       Debug.Print .FoundFiles(i)      End If     Next j    Next i   Else    Debug.Print "検索条件を満たすファイルはありません。"   End If  End With End Sub

すると、全ての回答が全文表示されます。

関連するQ&A