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ランキング
-
vba クリップボードクリアにつ...
-
VBのWPFとはなんでしょうか?
-
意味が分からないエラー
-
IISワーカープロセスが原因でCP...
-
AccessとVBの違いについて
-
このVBAでExcelアプリケーショ...
-
使用しているJUnitのバージョン...
-
JSPファイルで生じるエラーをど...
-
gitでバージョン指定してダウン...
-
PythonやJavaScriptのように実...
-
struts2環境構築で不具合が出て...
-
授業でプログラミングのJavaの...
-
エクリプスのプログラミングに...
-
Javaでのエラーについて
-
C言語でメール送信
-
gridviewでの高さの取得方法
-
Pythonを勉強する道のり
-
javacのコンパイルでファイルが...
-
XMLとUMLの相違点?
-
【javaコンパイル時のエラーに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
VBのWPFとはなんでしょうか?
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
意味が分からないエラー
-
java3dが動かない
-
帳票出力について
-
32ビットのアプリで、64ビットO...
-
ログオフ中でもアプリケーショ...
-
ASP(VB).NETでの背景色変更
-
C#のメモリマップドファイルに...
-
Java でネイティブアプリケーシ...
-
AccessとVBの違いについて
-
[VB.2005]クライアントからWEB...
-
このVBAでExcelアプリケーショ...
-
HTMLアプリケーションの作成
-
C++からC#へ
-
JAVAプログラムをWEB表示させる...
-
java起動時の日本語引数文字化...
おすすめ情報
上記のVBAを別のpcで使用した所同じ動作になりませんでした。どいうことでしょうか?
具体的にはファイル名と日時が貼り付けられません。何かVBA使用する際に設定することがあるのでしょうか?他のVBAは使用できるのですが?