No.4ベストアンサー
- 回答日時:
やり方としては、以下の形になります。
必要なAPIは以下の3つです。
'ファイル検索
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
'次ファイル検索
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
'検索ハンドル開放
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
APIで使用する構造体は以下の通りです
Private Type WIN32_FIND_DATA
dwFileAttributes As Long 'ファイル属性
ftCreationTime As FILETIME '作成日
ftLastAccessTime As FILETIME '最終アクセス日
ftLastWriteTime As FILETIME '更新日
nFileSizeHigh As Long 'ファイルサイズ(上位)
nFileSizeLow As Long 'ファイルサイズ(下位)
dwReserved0 As Long '
dwReserved1 As Long '
cFileName As String * MAX_PATH 'ファイル名
cAlternate As String * 14 'ファイル名(8.3Ver)
End Type
Private Function mSheachFile(ByVal vstrRoot As String)
Dim lngHndle As Long '検索ハンドル
Dim lngRet As Long '検索結果
Dim usrWin32Fnd As WIN32_FIND_DATA 'ファイル情報
Dim intStLen As Integer '文字検索値
Dim strFileName As String 'ファイル名
'パス符号追加
If Right(vstrRoot, 1) <> "\" Then vstrRoot = vstrRoot & "\"
'フォルダ検索
lngHndle = FindFirstFile(vstrRoot & "*.*", usrWin32Fnd)
If lngHndle <> INVALID_HANDLE_VALUE Then
'検索結果あり
Do
'NULL文字を削除する
intStLen = InStr(usrWin32Fnd.cFileName, vbNullChar) - 1
If intStLen > 0 Then
'文字があれば取得ファイルの属性を調査
strFileName = Left(usrWin32Fnd.cFileName, intStLen)
If usrWin32Fnd.dwFileAttributes = vbDirectory Then
'取得ファイルの属性がフォルダ
If strFileName <> "." And strFileName <> ".." Then
'フォルダ内を検索する
Call mSheachFile(vstrRoot & strFileName)
End If
Else
'ファイル内を検索する
Call mFileChek(vstrRoot & strFileName)
End If
End If
'次検索
usrWin32Fnd.cFileName = String(Len(usrWin32Fnd.cFileName), vbNullChar)
lngRet = FindNextFile(lngHndle, usrWin32Fnd)
Loop While lngRet <> 0
End If
FindClose (lngHndle) '検索終了
End Function
No.3
- 回答日時:
こんにちは。
Office カテゴリでも同じような内容がありましたが、
FileSearch オブジェクトか、1番さんの再帰の方法(私は使わないけれど)とか、他にも方法があります。ただ、FileSearch オブジェクトは使い勝手が悪いです。
できないわけではありませんが、ただ、こう言っては実も蓋もありませんが、Office 系では、フォルダを掘り下げていくということはあまりしませんね。せいぜい、ファイル検索までで、開けたりはしません。
No.2
- 回答日時:
『あるフォルダ』の指定が一番のネックだと思います。
(OS(IE)のバージョンによって回答も替わると思いますよ)
OS と Excel のバージョンを明記されたら宜しいのでは?
> そのA1に値を表示させたいみたいな事はできるでしょうか?
はい
> VBのような言語を使わないといけないのでしょうか?
いいえ
VBA で可能です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- ソフトウェア フォルダ内の全サブフォルダ内のファイルパスをサブフォルダ毎に行を分けてリスト化したい 1 2022/11/13 10:27
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Excel(エクセル) 複数の同じ様式のエクセルデータの任意セルへの入力について 3 2022/04/27 15:00
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのウインドウサイズの固定
-
VBA ファイル名取得
-
VB6でUTF-8ファイルの読取りを
-
excel マクロ PDF化の際のエラ...
-
VBAでCSVファイルを読み込もう...
-
VB.net XMLの作成方法 Iniの代替
-
FileDialog オブジェクトでファ...
-
visual studioでフォームデザイ...
-
Excel97のVBAでコモンダイアロ...
-
Long型で表現できないファイル...
-
複数のワークブックのVBAを変更...
-
VBAの初心者でやりたいことがあ...
-
iniファイルへの追記について
-
動かなくなってしまった古いVBA...
-
vbaサブフォルダーをワイルドカ...
-
サブフォルダ含むフォルダ内の...
-
inetコントロールを使用したFTP...
-
VBからExcelファイルを開くとき...
-
Wordのプロパティ・総ページ数...
-
フォルダ階層・ファイル名・ペ...
マンスリーランキングこのカテゴリの人気マンスリー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で開いている...
おすすめ情報