
処理の度にシート数が変わるブックで同じマクロを繰り返したいのですが、すべてのシートを選択してマクロを実行したところマクロに範囲指定→ソートの部分があり、処理が止まってしまいます。そこでDo~Loopを使用して順番にマクロを処理していこうと思うのですが、マクロを止める構文がよく解りません。
VBA初心者なものでいろいろ調べて以下のようなものを考えてみたのですがエラーになってしまいます。どなたかお助けください。
Do Until ActiveSheet.Previous.Is Nothing
Application.Run "PERSONAL.XLS!Macro101"
ActiveSheet.Previous.Activate
Loop
End Sub
No.1ベストアンサー
- 回答日時:
Dim ws As Worksheet
For Each ws in Worksheets
Application.Run "PERSONAL.XLS!Macro101"
ws.Previous.Activate
Next
違うかな?
この回答への補足
ご回答誠にありがとうございました。上記の記述で走らせたところ
ws.Previous.Activateのところで止まってしまうので下記の様に変更したところうまくはしりました。かなり感動しました。(^_^)
Dim ws As Worksheet
For Each ws In Worksheets
Application.Run "PERSONAL.XLS!Macro101"
ws.Next.Activate
Next
ついでと言っては何なのですが、最後まで処理が走ったところで
「実行時エラー”91”
オブジェクト変数またはWithブロック変数が設定されてません」と表示されます。このエラーを発生させないためにはどのように記述を修正したらよいのでしょうか。大変恐縮ですがよろしくご指導お願いいたします。
No.2
- 回答日時:
こんにちは。
質問のコードは、コード全体をみないと手が付けられないと思います。
>Application.Run "PERSONAL.XLS!Macro101"
いちいち、ループして、別のブックのマクロオブジェクトを呼び出しているわけですね。
参照設定されているなら分かるけれども、「PERSONAL.XLS」 のマクロをRunで呼び出すのは、ちょっと考えられません。通常、PEROSNAL.XLS にあるマクロは、特殊なものを除けば、単独で使うものがほとんどです。そのDo--While のループのマクロの本体はどこにあるのでしょうか?
そのモジュールに、別途、コードを書けばよいのではありませんか。
もし、それが、マクロ・モジュールとして使うなら、最初から、アドインにするか、そのマクロ全体を、「PEROSNAL.XLS」に入れればよいと思います。Run で呼び出しても、結局、呼び出しの対象は、オブジェクトになっているので、ループでは、タイミングが悪いです。
本来、Run で呼び出すマクロは、一般ユーザーが手を加えていけないようなものに対して行いますから、恣意的に、Run を使うわけではありません。
>処理の度にシート数が変わるブックで同じマクロを繰り返したいのですが、
という意味が、マクロからは分かりません。
ActiveSheet.Previous Is Nothing (.コンマは取りました)
という意味は、シートのIndex が、「1」 という意味です。
つまり、
ActiveSheet.Previous.Activate
というのなら、シートの最後から遡っていけば、成立するという意味だと思います。
コードで明示的に書くと、
For i = ActiveWorkbook.ActiveSheet.Index To 1 Step -1
ということです。実際、これは、ActiveWorkbook のシートの全部をループするマクロではありません。
通常は、
For Each ws In ActiveWorkbook.Worksheets で、全部のシートをループします。Next もPrevious でも必要はありません。ws に自動的に、格納されています。
>マクロに範囲指定→ソートの部分があり、処理が止まってしまいます。
というのは、もともと、該当する部分にデータがないのか、全体にデータがないのかどちらかだと思います。
例えば、
If ActiveSheet.UsedRange.Cells.Count =1 Then
なら、シートのデータは、1つか、何もないか、どちらかという意味ですし、
WorksheetFunction.Count(ActiveSheet.Cells)
なら、何にもないかどうかはチェックできます。
それから、
>For Each ws In Worksheets
>Application.Run "PERSONAL.XLS!Macro101"
>ws.Next.Activate
>Next
このマクロの意味が分からないです。「"PERSONAL.XLS!Macro101"」の内容が分からないから何もはっきりしたことはいえないけれども、そのまま読めば、シートを一つ置きにという意味になるし、ワークシートが最後(wsに格納される)に来たとき、論理的にActivate しますから、エラーが出ます。
アドバイスありがとうございます。今年から始まった特定健診の電子データ化でデータを受け取る側の仕事をしており、データがCSVではなくXMLで送られてくることがオールジャパンで決められており、急遽XMLとVBAの勉強が課せられてアップアップの日々です。XMLをVBAで加工しているのですが、健診1件につきXMLファイルが1個となるため健診機関から報告の度にシート数が違ってしまうのです。
ご指摘の通り細かいマクロを束ねて一つのマクロにしています。内容を整理してひとつのマクロにして再度チャレンジしてみます。
今回はありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) 【VBA】複数ブックから特定のシートを抽出して一つのブックに集約するマクロについて 3 2022/09/04 15:05
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
マクロを特定の複数シートで実行する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
エクセルのマクロ機能で前のシ...
-
Excel VBA のdebug(F8キー) が...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
エラーになってないのにVBA...
-
ワードからエクセルへ貼り付け...
-
Excelマクロでオプションボタン...
-
エクセル グラフの軸の最小値最...
-
Wordの画面を左右にスクロール...
-
Wordで「原稿用紙○枚」を換算す...
-
Excel2000 データの並べ替えで...
-
powerpointにwebページを挿入
-
マクロボタンを作ってのマクロ...
-
マクロ ブックをマクロなしでコ...
-
エクセル 自動で別シートへ並...
-
エクセル ピボットテーブルの...
-
複数ファイルにある特定のシー...
-
TeraTermのマクロについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
Excel VBA のdebug(F8キー) が...
-
Excelを開いた時に表示さ...
-
EXCELのセルへ、デジタル時計を...
-
エラーになってないのにVBA...
-
エクセル グラフの軸の最小値最...
-
エクセルのマクロ機能で前のシ...
-
ワードからエクセルへ貼り付け...
-
複数ファイルにある特定のシー...
-
Excelマクロでオプションボタン...
-
Wordの画面を左右にスクロール...
-
【Excel VBA】エラー番号400
-
Wordで「原稿用紙○枚」を換算す...
-
エクセルで複数のシートをまと...
-
モジュール内のマクロを全て実...
-
TeraTermのマクロについて
-
EXCEL2000 VBA マクロ実行中に...
-
開いているフォルダを全て閉じ...
-
マクロボタンをある条件の時に...
おすすめ情報