
下記の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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンをファイルにリンクさせたい
-
HTMLタグのあるCSVファイルを利...
-
Windowsのメモ帳でジョークウイ...
-
エクセルをダウンロードさせる...
-
JSONファイルをダウンロードさ...
-
ファイルのアクセス権の取得
-
Windows7でFTP内容が更新されない
-
バッチによるショートカットの...
-
1フォルダに保存できるファイル...
-
指定したファイルを開くとこの...
-
ダウンロード不可PDFファイルは...
-
Microsoft Access エラー 3051
-
複数のテキストファイルをexcel...
-
FFFTPでサーバに新規フォルダが...
-
Excelでdatファイルを作成??
-
【Excel VBA】PDFを作成して,...
-
エクセルVBA フォームを開く時...
-
VBAでファイルパスが長すぎてコ...
-
Windows Live メールのフォルダー
-
フォルダ作成用バッチファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチによるショートカットの...
-
1フォルダに保存できるファイル...
-
エクセルVBA ファイルOPEN時の...
-
C#のAxWindowsMediaPlayerから...
-
Excel VBAどこが間違ってますか?
-
HTMLプログラムにExcelをリンク...
-
HTMLタグのあるCSVファイルを利...
-
Excel-VBA 撮影日時の取得
-
ファイルのアクセス権の取得
-
FTPサーバからファイルをダウン...
-
Windowsのメモ帳でジョークウイ...
-
JSONファイルをダウンロードさ...
-
動的に生成したVSBファイルへデ...
-
同一ドメイン上でファイルを別P...
-
subversionからファイル取得時...
-
VBAでファイルを指定して印刷さ...
-
【VC++6.0 MFC】画像表示について
-
ボタンをファイルにリンクさせたい
-
エクセルVBA
-
VBA IE操作 ダイアログボックス...
おすすめ情報