以前、質問させて頂き、マクロでしたい事の記述方法を教えて頂きました。
ご教示頂いたマクロ記述に更に手を加えて、下記のように記述しました。
したいことは、一つのフォルダにExcel Bookが120ほどあり、その中のマクロを組んだ集計用Book以外のBookから同じ名前のシート”結果”をコピーして、コピペされたシートは1、2、3・・という名前にして集計用Bookに値貼り付けをする。。というものです。
ところが、下記のマクロを実行するとシート名25までコピペされるのですが、途中で
”問題が発生したため MICROSOFT OFFICE EXCELを 終了します。・・・・・” とエラーになってしまいます。
このエラーを回避して120ほどあるシートをマクロのある集計Bookへコピペするには、どのようにしたら良いでしょうか?
ご存知の方がみえたら、ご教示下さい。宜しくお願いいたします。
<マクロの記述>
Sub macro()
Const Aフォルダ As String = "C:\Documents and Settings\Bic\デスクトップ\Aフォルダ\"
Dim FileCounter As Integer
Dim myName As String
myName = Dir(Aフォルダ & "*.xls")
FileCounter = 0
Application.ScreenUpdating = False
Do While myName <> ""
If myName <> ThisWorkbook.Name Then
Application.DisplayAlerts = False
Workbooks.Open Aフォルダ & myName
On Error Resume Next
Workbooks(myName).Worksheets("結果").Copy After:=ThisWorkbook.Worksheets(2 + FileCounter)
If Err.Number = 0 Then
ActiveSheet.Range("A1:L35").Copy
ActiveSheet.Range("A1:L35").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
FileCounter = FileCounter + 1
ActiveSheet.Name = FileCounter
End If
On Error GoTo 0
Workbooks(myName).Close
End If
myName = Dir
Application.DisplayAlerts = True
Loop
Application.ScreenUpdating = True
End Sub
No.2ベストアンサー
- 回答日時:
こんばんわ。
■文中に対する回答
>Resume Nextは、最初にマクロの記述を教えて頂いたとおり試してみたところ、何度かエラー表示されたので、回避しようと記述しました。。
「何度かエラー」とは具体的に何なのか、最初にそこの所を詳しく書くと良かったと思います。
そこでエラーを無理やり押さえ込んでも、そのツケは必ずどこかに回ってきます。
なので、そこはエラーの原因をちゃんと追究すべき場面ですよ。
>すると ActiveSheet.CutCopyMode = False に[実行時エラーー438:オブジェクトはこのプロパティ、またはメソッドをサポートしていません]というエラーが出ることがわかりました。
ActiveSheet.CutCopyModeですか?
Application.CutCopyModeじゃなくて?
イミディエイトで「ActiveSheet.CutCopyMode = False」を実行しましたが、やはりエラーになりますね。誤記ではないのですか?
でも、最初の投稿にあったソースコードにはApplicationで書いてあるし…どっちが正しいんですか?
■チェックすべき点
(1)ファイルメニューの<デバッグ>→<[プロジェクト名]のコンパイル>がちゃんと通るか。(文法的に間違いが無いか)
(2)落ちる直前に開いていたワークシートに問題はないか?
(1)ブックにパスが掛かっていないか
(2)ワークシートが保護されていないか
(3)非表示のワークシートを参照していないか
(4)手でちゃんと開けるか
(3)ActiveSheetが自分の意図したワークシートを指しているのか?
⇒ご存知かもしれませんが、デバッグ中に他のワークシートを変更しても、そこがActiveSheetとして参照されます。
やり方は何でもいいですが、Debug.Print ActiveSheet.nameなどで、あなたが意図したとおりのシートを参照しているかチェックしてください。特に20シート目以降。
■ソースコードを見て思ったこと
(1)デバッグ中はOn Error Resume Next や、Application.DisplayAlerts、Application.ScreenUpdatingは、無効にしましょう。エラーや警告を見落とします。エラーが無く、意図通り動作することが分ったらことが分ったらONに。
(2)25シートまでは順調にコピペの動作をしてくれるなら、その状態で26シート目を手でペーストするとどうなるのか?
(3)そもそも、120シートもブックに保存できるのか?空シートなら100枚でも余裕らしいけど、データありのシートだと40枚程度が限界らしい。実現方式に問題は無いのか?
[エクセル2003で最大シート数は?]
http://oshiete.goo.ne.jp/qa/3047947.html
yuki-alphaさん、丁寧に色々ご教示下さり、本当にありがとうございました。
昨日、今日ににかけてyuki-alphaさんのチェックすべき点を全部チェックしたり、120シートのコピペは本当に出来ないかなど確認していました。
確認してわかったのは、120シートコピペ出来ました。
ただ、コピー元の120のBookの内容?容量?が軽い場合です。
私が実際に使うコピー元の120のBookは複雑なマクロも組まれており、また1つのBookに8シートあり、すべてのシートに関数が組まれています。
テスト用の120のBookも同じように簡単な関数を使った表を8シート、簡単なマクロを組んだものをテスト用に作り、そこで試してみたら120コピペ出来ました。
たぶん、コピー元のマクロに原因がありそうかな。。と。
しかし、コピー元のマクロはコピー元Bookの情報を取得する為、絶対触ってはいけないとのことなので、仕方なく120のBookを20~25に分けて、シートのコピペをして、集計Bookを更に集計します。とりあえず、その方法でも手動でするよりは早いので(uu;)
それからyuki-alphaさんのご指摘通り、恥ずかしながら色々試しているうちに記述を書き間違えてました(><)!(Application.CutCopyMode = False でした。)
色々丁寧にご教示下さり本当にありがとうございました。
■ソースコードを見て思ったことの(1)や、■チェックすべき点など。。今後デバックが出る前、出た時に役立つ情報をありがとうございました!
No.1
- 回答日時:
これ、Application.ScreenUpdating を True のままで、
On Error Resume Nextをコメントアウトした状態でマクロを実行したら何らかの実行時エラーが出てきませんでしたか?
Resume Nextは「エラーを無視して先に進む」なので、重要なエラー情報を見落とす可能性があります。ご存知かもしれませんが。なにか、エラーを抑止するしかない事情が?
もしかしたら、Excelが落ちる現象も、そのへんで起こっているかもしれませんね。
で、もし実行時エラーが出ていた場合、そのメッセージも書いていただけると、より正確な回答が得られるのではないでしょうか。
あと、ステップ実行してどの命令で落ちているか、など。
早速のご回答、本当にありがとうございます。
まだVBAを学び出したばかりで、質問の仕方も下手で申し訳ありません。
Resume Nextは、最初にマクロの記述を教えて頂いたとおり試してみたところ、何度かエラー表示されたので、回避しようと記述しました。。が、
yuki-alphaさんのご提案のように、一度コメントアウトし、実行してみました。
すると ActiveSheet.CutCopyMode = False に[実行時エラーー438:オブジェクトはこのプロパティ、またはメソッドをサポートしていません]というエラーが出ることがわかりました。
そこで、ActiveSheet.CutCopyMode = False をコメントアウトして再度実行しましたが、最初のエラーと変わらず、25シートまではコピペされるのですが、[問題が発生したため、Microsoft Office Excelを終了します。ご不便をおかけして申し訳ありません。]というエラーになってしまいました。
ActiveSheet.CutCopyMode = False 以外のメソッドはステップ実行をして確認をしたのですが、特にエラーもなく、25シートまでは順調にコピペの動作をしてくれます。
もし、まだ何か回避できるような案があれば、是非是非ご教示下さい。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ワイルドカード「*」を使うとうまくいかないマクロの添削をお願いします 3 2022/03/26 09:39
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
Excel2013,2016 マクロの動作が停止する?
Visual Basic(VBA)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
実行時エラー3001「引数が間違...
-
VBAでのエラー
-
VBAがブレークモードになっ...
-
なぜエラーになるのでしょうか...
-
VBで構造体を使うさ際の64k...
-
VBSで変数の宣言はできないので...
-
エクセルエラー13型が一致しま...
-
VBA コピペの途中でエラーにな...
-
VBからAccessへの接続でエラー
-
EXCEL VBA シート追加時のエラ...
-
VBS実行時エラー オブジェクト...
-
vbaのvlookup関数エラー原因を...
-
VB6+SQL サーバー 2000 で 実行...
-
なぜこんな初歩的なVBAのIf文で...
-
Excelのマクロ ブック間である...
-
C言語 mallocのエラーに関する質問
-
VBAで実行時エラー'424' オブジ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
【Excel VBA】マクロをボタンに...
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
VBAでのエラー
-
実行時エラー -'-2147417848
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜエラーになるのでしょうか...
-
ADODB.Streamを使用してUTF-8を...
-
VBAのコードがエラーになっ...
-
Outlook.ApplicationをCreateOb...
-
VB6+SQL サーバー 2000 で 実行...
-
ExcelVBAで、ユーザー定義型は...
-
実行時エラー48発生時のDLL特定...
おすすめ情報