
下記のVBAで間違っているとこがあれば教えてください。うまく動作しません。
やりたいこと
・特定のフォルダー内に複数のフォルダーがありその中にExcelファイルがあります。
そのExcelファイルのファイル名を抽出してExcelシートに一覧で表示させたい。
※フォルダー内にファイルが多いため更新日時の日付を指定してそれ以降のファイルのみ抽出したい
Sub GetUpdatedExcelFiles()
Dim folderPath As String
Dim fileName As String
Dim lastRow As Long
Dim fileDate As Date
Dim currentDate As Date
' フォルダーパスを指定
folderPath = "C:\YourFolderPath\"
' シート1のA1セルの日付を取得
currentDate = Sheets("Sheet1").Range("A1").Value
' 初期行を設定
lastRow = 3
' フォルダ内の全てのファイルに対してループ処理
fileName = Dir(folderPath & "*.xls*")
Do While fileName <> ""
' ファイルの更新日を取得
fileDate = FileDateTime(folderPath & fileName)
' 更新日が現在の日付以降の場合、ファイル名を表示
If fileDate >= currentDate Then
Sheets("Sheet1").Cells(lastRow, 1).Value = fileName
lastRow = lastRow + 1
End If
' 次のファイルに進む
fileName = Dir
Loop
' メッセージボックスで処理完了を表示
MsgBox "Excelファイルの一覧を取得しました。"
End Sub
おかしい箇所があれば教えてください。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>こちらは二つのマクロが有ると言うことでいいのでしょうか?
はい。その通りです。
Sub Excelファイル再帰検索 を実行してください。
そうすると、Sub Excelファイル再帰検索からSub displayが
呼び出されます。
その結果、Excelファイルの一覧が作成されます。
No.3
- 回答日時:
No2です。
folderPath = "d:\goo\excel" はこちらで試験した環境です。
あなたの環境の
folderPath = "C:\YourFolderPath" に設定してください。
最後の\は、つけないでください。
No.2
- 回答日時:
サブフォルダ内のファイルも含めて表示するには再帰処理がひつようになります。
Dir関数が再帰処理に適合しないと思われますので、FileSystemObjectを使用します。従って、作り直しになります。
以下のようにしてください。
Option Explicit
Dim FSO As Object
Dim fileName As String
Dim lastRow As Long
Dim fileDate As Date
Dim currentDate As Date
Dim ws As Worksheet
Dim REG As Object
Public Sub Excelファイル再帰検索()
Dim folderPath As String
folderPath = "d:\goo\excel"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ws = Worksheets("Sheet1")
currentDate = ws.Range("A1").Value
lastRow = 3
ws.Rows("3:" & Rows.Count).ClearContents
Set REG = CreateObject("VBScript.RegExp")
REG.Pattern = "^.+\.xls.*$"
REG.IgnoreCase = True
Call display(folderPath)
MsgBox "Excelファイルの一覧を取得しました。"
End Sub
Private Sub display(ByVal path As String)
Dim trgfolder As Object
Dim wfiles As Object
Dim wfile As Object
Dim wsubfolders As Object
Dim wsubfolder As Object
Set trgfolder = FSO.GetFolder(path)
Set wfiles = trgfolder.Files
Set wsubfolders = trgfolder.Subfolders
For Each wfile In wfiles
If wfile.datelastmodified >= currentDate Then
If REG.test(wfile.Name) = True Then
ws.Cells(lastRow, 1).Value = wfile.Name
lastRow = lastRow + 1
End If
End If
Next
For Each wsubfolder In wsubfolders
display (wsubfolder.path)
Next
End Sub
不明点があれば、補足してください。
返信ありがとうございます。
こちらは二つのマクロが有ると言うことでいいのでしょうか?そのまま貼り付けたところ分割されたのですが?
No.1
- 回答日時:
「うまく動作しません。
」とは、具体的にどういう現象なのでしょうか。こちらで、確認したところ、正しく動作しています。
(folderPathの内容はこちらの環境です)
もし、「folderPath = "C:\YourFolderPath\" の下にサブフォルダがあり、
そのサブフォルダ内のexcelファイルも一覧に表示したい」ということでしたら、このマクロでは対応していません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1フォルダに保存できるファイル...
-
JSONファイルをダウンロードさ...
-
【VC++6.0 MFC】画像表示について
-
別サーバーへの書き込み
-
subversionからファイル取得時...
-
Windows7でFTP内容が更新されない
-
エクセルをダウンロードさせる...
-
CSVファイルダウンロードダイア...
-
複数のテキストファイルをexcel...
-
このコードはFSOを使ってるので...
-
CD-R OM(MX), 拡張子ASXの再...
-
テキストファイルの文字色に色...
-
テキストファイルを、ファイル...
-
Excelでdatファイルを作成??
-
インデザインのテキスト流し込み
-
Winのxmllintで文字化けを解消...
-
BIGLOBEのウェブリメールはフォ...
-
レーザープリンターのA4・5...
-
Objective-CでCの関数に引数を...
-
Excelでのデータ挿入が上手くで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチによるショートカットの...
-
1フォルダに保存できるファイル...
-
エクセルVBA ファイルOPEN時の...
-
Excel-VBA 撮影日時の取得
-
ファイルのアクセス権の取得
-
JSONファイルをダウンロードさ...
-
Windows7でFTP内容が更新されない
-
一括ダウンロードの方法
-
動的に生成したVSBファイルへデ...
-
Windowsのメモ帳でジョークウイ...
-
HTMLタグのあるCSVファイルを利...
-
Excel VBAどこが間違ってますか?
-
FileUploadで複数ファイルのア...
-
HTMLプログラムにExcelをリンク...
-
subversionからファイル取得時...
-
C#のAxWindowsMediaPlayerから...
-
WebLogic/javaで一部JSPだけが...
-
global.asaについて
-
IEで複数のファイル選択方法
-
ファイル変更の監視を開始でき...
おすすめ情報