
Sub GetExcelFileNamesAndDates()
Dim folderPath As String
Dim searchDate As Date
Dim folder As Object, subFolder As Object, file As Object
Dim excelApp As Object
Dim rowNum As Integer
Dim pasteRange As Range
' フォルダーパスと検索日付を設定
folderPath = "C:\Users\kes1o\Desktop\新しいフォルダー"
searchDate = Sheets("Sheet1").Range("A1").Value
' Excelアプリケーションを作成
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = False
' フォルダー内のサブフォルダーとファイルを検索
Set folder = CreateObject("Scripting.FileSystemObject").GetFolder(folderPath)
' 結果をシート1のA3セルから貼り付け
Set pasteRange = Sheets("Sheet1").Range("A3")
rowNum = 0 ' 貼り付ける行番号を初期化
For Each subFolder In folder.SubFolders
For Each file In subFolder.Files
' ファイルがExcelファイルかつ更新日が検索日付以降の場合、ファイル名と更新日時を表示
If (Right(file.Name, 5) = ".xlsx" Or Right(file.Name, 4) = ".xls") And file.DateLastModified >= searchDate Then
pasteRange.Offset(rowNum, 0).Value = file.Name
pasteRange.Offset(rowNum, 1).Value = file.DateLastModified
rowNum = rowNum + 1
End If
Next file
Next subFolder
' Excelアプリケーションを終了
excelApp.Quit
End Sub
ChatGPTで作成しましたがExcelアプリケーションを作成の部分は必要でしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
まずは、どう「動かない」なのか?
エラーメッセージが出るのか?出ないのか?
出るならどんなメッセージか?
次に、動かない理由を調査すること。
考えられるのは
・フォルダーが無い。
そもそも無い/元のPCと場所が違う
・ファイルが無い。
そもそも無い/[更新日]ファイル名に該当するファイルが無い
「vba デバッグ やり方」
で検索して、デバッグ方法を勉強しましょう。
ブレークポイントやステップ実行で、以下の箇所をとくに重点的にしらべましょう
Set folder = CreateObject("Scripting.FileSystemObject").GetFolder(folderPath)
エラーになっていないか?
For Each file In subFolder.Files
このループに入ってくるか?(=folder.SubFolders が空なのかそうでないのか)
If (Right(file.Name, 5) = ".xlsx" Or Right(file.Name, 4) = ".xls") And file.DateLastModified >= searchDate Then
この行に到達するか?(=subFolder.Filesが空なのかそうでないのか)
file.Name は期待通りかそうでないのか?
file.DateLastModified は期待通りかそうでないのか?
searchDateは期待通りなのかそうでないのか
No.2
- 回答日時:
まずは、そのプログラムで、excelApp が使われているところを確認することです。
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = False
excelApp.Quit
の3箇所だけです。
アプリを起動→隠す→アプリ終了
です。
excelAppを利用して何かをするのなら、もっと excelApp が使われているはずです。
※ excelApp.Visible = False は画面を隠しただけなので、excelAppを利用しているとは言えません。
また、新規にExcelを起動しなくても、大抵のことはVBAを動かしているExcelでできます。
excelAppは不要です。
No.1
- 回答日時:
' Excelアプリケーションを終了
excelApp.Quit
ここで「Excelアプリケーション」終了なので、作成の部分は
Set excelApp = CreateObject("Excel.Application")
ここってことになるのかしら。
返信ありがとうございます。やりたい事はフォルダー内に複数のフォルダーがありその中のExcelファイル名を更新日時で絞ってファイル名と日時を直接Excelシートに貼り付けたいです。動作できには問題ないのですが、今までExcelアプリケーションを作成を使った事がなくこの部分がどういう動作になっているのかもわからずまた必要なのかもわからない状況です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IISワーカープロセスが原因でCP...
-
vba クリップボードクリアにつ...
-
予約システムの開発ツール
-
Ctime
-
C#のWindowsフォームアプリケー...
-
JavaでMDB
-
VB.netでxml-rpcの使用は可能??
-
Javaサーブレットでツリー表示...
-
javaアプレットの勉強にオスス...
-
.NET Frameworkとvb.net
-
Javaで作ったアプリケーション...
-
unzip32.dllの利用について(64b...
-
金額の受送信
-
このVBAでExcelアプリケーショ...
-
IIS6.0アプリケーションプール...
-
JAVAプログラムをWEB表示させる...
-
JSPファイルで生じるエラーをど...
-
MSCOMCTL.OCXのアップデートの方法
-
VC++解説書(入門書)でオスス...
-
SQLの勉強がしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
JAVAプログラムをWEB表示させる...
-
C#のメモリマップドファイルに...
-
java起動時の日本語引数文字化...
-
SurfaceViewの一時停止や再開方法
-
JAVAアプレットとか。
-
AccessとVBの違いについて
-
JAVAのオススメ本
-
予約システムの開発ツール
-
プログラミングの『C♯』で作れ...
-
帳票出力について
-
java oneって?
-
アプレットからアプリケーショ...
-
JVM(JRE)の再配布?について。
-
Javaセキュリティによってブロ...
-
javaでアプリケーションを作りたい
-
RTT計測
おすすめ情報
上記のVBAを別のpcで使用した所同じ動作になりませんでした。どいうことでしょうか?
具体的にはファイル名と日時が貼り付けられません。何かVBA使用する際に設定することがあるのでしょうか?他のVBAは使用できるのですが?