![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル2003 VBAでファイ...
-
PytionでOneDriveへのアップロ...
-
会社のネットワーク上のファイ...
-
デスクトップの画像をhtmlに表...
-
エクセル マクロで指定フォル...
-
excelマクロ 冒頭3文字が一致す...
-
Windows10でコマンドプロンプト...
-
フォルダ選択ダイアログ:ネッ...
-
ファイル名と同名のフォルダを...
-
エクセル2003でのハイパー...
-
Excelで指定したフォルダに保存...
-
C ファイル出力で、フォルダが...
-
C#でフォルダをロックする方法
-
フォルダ内のPDFファイル名を変...
-
クラウドにあるフォルダを共有...
-
VBプロジェクトでのフォルダ構...
-
AIX findコマンド
-
フォルダ作成と同時に作成され...
-
【コマンドプロンプト】名前順...
-
VB.NRT FolderBrowserDialogを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
【マクロ】ファイル名の日付に...
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
VBA フォルダ名に特定の文字を...
-
Access VBA で フォルダ権限...
-
フォルダを開いて、閉じるのプ...
-
会社のネットワーク上のファイ...
-
フォルダ内のPDFファイル名を変...
-
フォルダにリンクを貼りたい
-
ディレクトリ名変更してコピー...
-
C ファイル出力で、フォルダが...
-
ExcelのVBAでフォルダ指定がで...
-
カレントフォルダって?
-
多量のファイルをフォルダに自...
-
ファイル名から該当フォルダへ移動
-
エクセル マクロで指定フォル...
-
保存先のフォルダ名を指定した...
-
ExcelVBAでフォルダへのハイパ...
おすすめ情報