プログラミング初心者です。どなたかご教授頂けないでしょうか。
VBAで、ファイル名をチェックする方法が知りたいです。
◆前提条件
・フォルダ構成
C:\Documents and Settings\デスクトップ\フォルダ1\ファイル1.xls
|_フォルダ2\ファイル2.xls
|_フォルダ3\ファイル3.xls
◆マクロで実現させたいこと
・ファイル1~ファイル3全てのファイル名チェックを行いたい。
・正しいファイル名【ファイル1_XXについて.xls】
・ファイル1、2、3・・・と続く
・_アンダーバーが必ず入っていること
・”XXについて”の箇所はチェックをしない
・.xlsが必ずついていること
申し訳ありませんがお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
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照会。
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
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
動かなくなってしまった古いVBA...
-
VBAでフォルダ内のhtmlファイル...
-
ffftpでファイル取得が0バイト...
-
vbaサブフォルダーをワイルドカ...
-
サブフォルダ含むフォルダ内の...
-
ExcelVBA 文字コード変換
-
更新日が指定日以降のファイル取得
-
エクセルのVBAで開いている...
-
FileDialog オブジェクトでファ...
-
VBA ファイル名取得
-
MAPIコントロールでファイル添...
-
excel マクロ PDF化の際のエラ...
-
VBからExcelファイルを開くとき...
-
ファイルのアクセス回数について
-
バッチファイル 二つ上のディ...
-
エクセルのプロパティーでセキ...
-
エクセルで複数のコメントのサ...
-
エクセルvbaでdocuworksprinter...
-
フォルダ内のPDFファイル名を変...
-
DXFファイルをVBで取り込み、図...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaサブフォルダーをワイルドカ...
-
動かなくなってしまった古いVBA...
-
ffftpでファイル取得が0バイト...
-
FileDialog オブジェクトでファ...
-
サブフォルダ含むフォルダ内の...
-
Accessのウインドウサイズの固定
-
「エクセルファイルが開いてい...
-
excel マクロ PDF化の際のエラ...
-
ExcelVBA 文字コード変換
-
AccessからOLEオブジェクト型の...
-
VBAでフォルダ内のhtmlファイル...
-
【VBAマクロ初心者】Excel VBA...
-
VBからExcelファイルを開くとき...
-
「AccessViolationException」...
-
【ACCESS VBA】アクセスからデ...
-
VB6でUTF-8ファイルの読取りを
-
ファイルを開く時間測定のスク...
-
複数のワークブックのVBAを変更...
-
VB.net XMLの作成方法 Iniの代替
-
エクセルのVBAで開いている...
おすすめ情報