
VBAについて質問です。
コードを実行するとエディタ画面およびコードを書いているブックの両方の画面が真っ白になってしまいます(コードやプロジェクトウィンドウの内容も消え、ブックもデフォルトの薄い枠線が消えて全体がグレーアウトのようになります)。
こちらの解決方法をご教示頂けないでしょうか。
(今回のVBAの目的)
見積書のエクセルブックが1000個ほど入ったフォルダから、データを抽出して一つのシートに一覧作成したいです。
具体的には、
指定したフォルダ内のブック一つ一つを順番に開く→特定のセルの値をコピー→VBAコードを書いているブックにペースト→開いたブックを閉じる
というコードを書きたいです。
(作成状況)
VBA初心者のため、ネット上のコードを参考につなぎ合わせて作成しております。
説明が不足している、またわかりにくい等あるかと思いますが、追記にてわかる範囲で情報提供させて頂ければと思います。
・抽出対象のブックと同じフォルダ内にVBA実行ブックを格納しています
・標準モジュールで作成しています
・実行した際、エラー表示は出ません
↓以下、記載したコードです。
Sub test()
Const cnsTitle = "同じフォルダ内の複数ブックからデータを抽出して一覧作成"
Const cnsDIR = "\*.*"
Dim xlAPP As Application
Dim strPath As String
Dim strFilename As String
Dim GYO As Long
Set xlAPP = Application
Dim dstSheet As Worksheet
Set dstSheet = ThisWorkbook.Worksheets(1)
' フォルダの場所を指定する
strPath = ThisWorkbook.Path
MsgBox strPath
' 先頭のファイル名の取得
strFilename = Dir(strPath & cnsDIR, vbNormal)
MsgBox strPath & "\" & strFilename
' ファイルが見つからなくなるまで繰り返す
Do While strFilename <> ""
GYO = GYO + 1
' 行を加算→ここまでは構文、この下から内容を
Dim srcBook As Workbook
Set srcBook = Workbooks.Open(strPath & "\" & strFilename)
Dim srcSheet As Worksheet
Set srcSheet = srcBook.Worksheets(1)
dstSheet.Cells(GYO, 1).Value = srcSheet.Cells(10, 8)
srcBook.Close False
' 次のファイル名を取得
strFilename = Dir()
Loop
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは
>vbaのブック自体が検索対象フォルダに入っているため、
>このブックもCloseの対象になっている、ということかと思うのですが
処理対象から、「コードを記載してあるブック」と「転記先のブック」は除くようにしておく必要がありそうです。(ざっと見たところ、両方は同じブックのようですが…)
そうでないと、同じフォルダの中にあるので、自分自身も対象となり、閉じられてしまうからです。
同じフォルダ内のファイルなら、ブック名で判断できるので、ループ内の最初の方で
If strFilename <> ThisWorkbook.Name Then
などとして、自分自身は処理しないようにしておけば宜しいでしょう。
ついでながら、ご質問とは関係ありませんが、
>Const cnsDIR = "\*.*"
だと、フォルダ内の全ファイルが対象となるような指定になっています。
想像するところ、現状ではエクセルファイル以外はないのでしょうけれど、仮に、他のファイルがある場合、それも処理の対象となってしまいおかしなことになりかねません。
"\*.xls" などとしておいた方が安全側ではないかと感じます。
さらに、おせっかいながらですが・・・
>見積書のエクセルブックが1000個ほど入ったフォルダから
1000個のファイルを開く/閉じるを繰り返すとそれなりの時間がかかってしまうと想像されます。
一方で、ざっと見る限り、1ブックから1セルの値だけを抜き出しているようなのと、対象が定型文書のようなので、参照するシート名は同じだろうと推測します。
ご提示のコードでは、srcBook.Worksheets(1) となっているので、同じ名のシートなのかどうかはっきりしませんが、同じシート名の場合は、Excel4Macroを利用することで開く/閉じるの時間を省略できるので、全体の処理時間を短縮できるものと思います。ご参考までに。
https://excel-ubara.com/excelvba5/EXCELVBA242.html
まさに、おっしゃる通りでした!原因はcloseの対象がvba実行用のファイルになっていたことでしたので、if文を使って解決できました!ありがとうございました。
Excel4macroについても、とても参考になります!ありがとうございました!
また、Excel4
No.2
- 回答日時:
' 次のファイル名を取得
strFilename = Dir()
は
strFilename = Dir("")
ではないか?
エラーでどこかに飛んでいるか永久ループしているか。
No.1
- 回答日時:
ご回答、大変参考になります!!ありがとうございます。
早速ループ内にDoEventsを入れてみました!
しかし、また同じように画面がグレーアウトしてしまいました。
ステップインで探ったところ、
srcBook.Close False
を実行した時に画面が消えるようです。
これは、vbaのブック自体が検索対象フォルダに入っているため、このブックもCloseの対象になっている、ということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい【ブック1からブック2へ】 9 2023/08/10 07:51
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
"I love you" をかっこよく翻訳してみてください
あなたが考えるいちばんかっこいい "I love you"の訳を教えてください。
-
はじめての旅行はどこに行きましたか?
記憶の中で1番昔の旅行先とエピソードを教えてください。
-
カラオケの鉄板ソング
歌えばその場が絶対盛り上がる「鉄板ソング」を教えてください!
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
マクロ実行後、表示がおかしくなる
Excel(エクセル)
-
マクロ実行後に別シートの残像が残り、オブジェクトが見えなくなる
Visual Basic(VBA)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
6
excelでVBA実行後に画面に残るゴミを無くしたい。
Excel(エクセル)
-
7
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
8
DoEvents関数って何?
Visual Basic(VBA)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
10
Excel マクロの編集がグレーになって 編集ができなくなりました
Excel(エクセル)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
UserForm1.Showでエラーになります。
工学
-
13
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
14
エクセル VBA実行中のApplication.ScreenUpdatingについて
Excel(エクセル)
-
15
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
16
Excelマクロで、稼働中のマクロを確認する方法
その他(Microsoft Office)
-
17
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
18
screenupdatingが機能しなくて困ってます
Visual Basic(VBA)
-
19
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
20
Excelでマクロ実行中に画面を固定する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
ワイルドカード「*」を使うとう...
-
VBAで別のブックにシートをコピ...
-
【ご教示ください】VBAの記述方...
-
Access開いているブックのセル...
-
VBの処理結果をEXCELシ...
-
複数のエクセルブックをひとつ...
-
エクセルのマクロについて教え...
-
サーバーに保存したエクセルフ...
-
オブジェクトは、このプロパテ...
-
【マクロ】アクティブセルにブ...
-
エクセルVBAが途中で止まります
-
マクロで最終行を取得したい
-
エクセルのマクロを使ってメー...
-
【ExcelVBA】zip圧縮されたCSV...
-
同フォルダ内の串刺し集計と文...
-
VBA コードを実行すると画面が...
-
マクロVBA別Excelブックにデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ブックをダイアログボックス...
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
ワイルドカード「*」を使うとう...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
【Excel VBA】書き込み先ブック...
-
Excelマクロ 該当する値の行番...
-
[Excel]ADODBでNull変換されて...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】インデックスが有...
-
VBAで複数のブックを開かずに処...
-
【ExcelVBA】zip圧縮されたCSV...
-
【VBA】全シートの計算式を全て...
-
エクセルのマクロを使ってメー...
-
VBS Bookを閉じるコード
-
ユーザーフォームの切り替えに...
-
Excelのマクロコードについて教...
-
Excel2007VBAファイルの表示に...
おすすめ情報
ステップインで探ったところ、
srcBook.Close False
を実行した時に画面が消えるようです。
これは、vbaのブック自体が検索対象フォルダに入っているため、このブックもCloseの対象になっている、ということかと思うのですが
これを回避するのに良い案があれば
ぜひコメントいただきたいです!