No.4ベストアンサー
- 回答日時:
Q、何か別の方法はあるのでしょうか?
A、あります。
DIR関数を使わないとすれば、FileSystemObject になります。
Microsoft Scripting Runtime を参照させる必要があります。
Private Sub コマンド0_Click()
Dim I As Integer
Dim N As Integer
Dim F() As String
F() = GetFileList("C:\Temp")
N = UBound(F())
For I = 1 To N
Debug.Print F(I)
Next I
End Sub
[イミディエイト]
Test.txt
TestII.txt
TestNew.txt
Text.ini
Text.txt
取引先マスター.csv
夫婦.txt
このように GetFileList 関数を作成すれば一発で Dir 結果を取得できます。
[イミディエイト]
? FileExists("C:\Temp\Test.txt")
True
このように FileExists 関数を作成すれば一発で有り・無しも調べることが可能です。
Public Function GetFileList(ByVal strDir As String, _
Optional strName As String = "*") As String()
On Error GoTo Err_GetFileList
Dim strFiles As String
Dim fso As FileSystemObject
Dim fol As Folder
Dim fil As File
Dim fils As Files
Set fso = New FileSystemObject
Set fol = fso.GetFolder(strDir)
Set fils = fol.Files
For Each fil In fils
If fil.Name Like strName And fil.Attributes = Archive Then
strFiles = strFiles & "," & fil.Name
End If
Next
Exit_GetFileList:
On Error Resume Next
GetFileList = Split(Mid(strFiles, 2), ",")
Exit Function
Err_GetFileList:
strFiles = ""
MsgBox Err.Description & "(GetFileList)", vbExclamation, " 関数エラーメッセージ"
Resume Exit_GetFileList
End Function
Public Function FileExists(ByVal FileName As String) As Boolean
Dim fso As FileSystemObject
Set fso = New FileSystemObject
FileExists = fso.FileExists(FileName)
End Function
No.5
- 回答日時:
B側を調べる際に、以下のHPの「VB [VB6]」の所の例を参考に、Dirを使わずにFileExistsを使用して下さい。
http://jeanne.wankuma.com/tips/file/exists.html
FileExistsであれば、A側をDir関数でループしている最中でも使えます。
なお、Dir関数の使用はあまり推奨されていないので、出来れば、A側のループもFSOを使用した方が良いです。2重ループならFSOを2つ、3重ループならFSOを3つ、と、必要なだけFSOを宣言すれば良いだけなので。
No.3
- 回答日時:
Dirを使わない別の方法をお探しなら
Scripting.FileSystemObjectが、それにあたります。
Scripting.FileSystemObjectで検索すると、たくさんでてきますが
http://www2.moug.net/bbs/exvba/20070411000054.htm
などが、サンプルがあって、試しやすいかもしれないです。
No.2
- 回答日時:
Dir関数は入れ子で使うことが出来ません
フォルダAに対してDir関数を実行して配列などにファイル名を格納します
その後でこの配列を元にして フォルダBに対してチェックを実行しましょう
dim fname(200) as String
dim s as string, n as integer, i as integer
s = dir("フォルダA\*.csv")
if s<>"" then
do
fname(n) = s
n = n + 1
s = dir
loop while s<>""
end if
for i= 0 to n
if dir("フォルダB\" & fname(i) )<>"" then
' 処理を記述
end if
next
といった具合です ...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム vba シートの追加について 2 2023/05/17 15:58
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBA GetAttrについて教えてください 2 2022/12/22 15:25
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 最新のフォルダ取得
-
windowsでテキストファイルの各...
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
ExcelのVBAでフォルダ指定がで...
-
VBA フォルダ名に特定の文字を...
-
Dreamweaverでイメージを挿入す...
-
あるフォルダの中にあるファイ...
-
保存先のフォルダ名を指定した...
-
Access VBA で フォルダ権限...
-
パスを通したはずなのに「パス...
-
excel VBA Dirにて検索したフォ...
-
フォルダにリンクを貼りたい
-
フォルダ内のPDFファイル名を変...
-
Excelのハイパーリンクについて...
-
バッチファイルで指定フォルダ...
-
多量のファイルをフォルダに自...
-
Hitachi Embedded Workshop (HE...
-
エクセル マクロで指定フォル...
-
【マクロ】フォルダAからダBへ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
パス名に2バイト文字(マルチバ...
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
Excelのハイパーリンクについて...
-
デスクトップの画像をhtmlに表...
-
ディレクトリ名変更してコピー...
-
VBA フォルダ名に特定の文字を...
-
バッチファイルで指定フォルダ...
-
フォルダ内のPDFファイル名を変...
-
Access VBA で フォルダ権限...
-
excelマクロ 冒頭3文字が一致す...
-
【マクロ】ファイル名の日付に...
-
フォルダにリンクを貼りたい
-
会社のネットワーク上のファイ...
-
多量のファイルをフォルダに自...
-
C ファイル出力で、フォルダが...
-
保存先のフォルダ名を指定した...
-
vbsで選択ダイアログを表示した...
-
Excel VBA 同じ名前のフォルダ...
おすすめ情報