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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IISワーカープロセスが原因でCP...
-
vba クリップボードクリアにつ...
-
appleスクリプトでアプリケーシ...
-
Mac用 アプリケーション作成 ウ...
-
プラグインとパッチの違いは?
-
unzip32.dllの利用について(64b...
-
Webアプリケーションの開発(HT...
-
OSS(オープンソースソフトウェ...
-
サイドワインダーのドライバ
-
MSFormsとは何ですか?
-
バイナリファイルの著作権など...
-
C++ですごろくゲーム作成
-
C++でおすすめの書籍はありますか
-
tomcatのwebapps配下のディレク...
-
javaの堅牢性とは
-
プログラマーとして誇りをもつには
-
リアルプレイヤーの古い(以前...
-
この便利な時代に開発環境すら...
-
SQLITE3で階層問い合わせを行う...
-
C言語の開発環境
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
32ビットのアプリで、64ビットO...
-
C++からC#へ
-
AccessとVBの違いについて
-
C#のメモリマップドファイルに...
-
ログオフ中でもアプリケーショ...
-
appleスクリプトでアプリケーシ...
-
意味が分からないエラー
-
java起動時の日本語引数文字化...
-
帳票出力について
-
Java でネイティブアプリケーシ...
-
C#のWindowsフォームアプリケー...
-
JavaアプレットはWebブラウザ上...
-
こんな事は可能でしょうか?
-
[VB.2005]クライアントからWEB...
-
ASP(VB).NETでの背景色変更
-
VBScript/Com+のメリット/デメ...
おすすめ情報
上記のVBAを別のpcで使用した所同じ動作になりませんでした。どいうことでしょうか?
具体的にはファイル名と日時が貼り付けられません。何かVBA使用する際に設定することがあるのでしょうか?他のVBAは使用できるのですが?