- ベストアンサー
Excelでマクロシートのコピー方法とbook1の開かずにマクロを実行する方法
- Excelでマクロシートをコピーする方法とbook1の開かずにマクロを実行する方法についてまとめました。
- マクロシートをコピーするためには、book1のsheet1のセルA1に「1」を入力しプリントアウトし、A1に「11」を入力しプリントアウトする操作を「31」まで繰り返します。
- book2にマクロシートをコピーした場合、book1が開いてしまう問題があります。book1を開かずにbook2でマクロを実行するためには、book2でマクロを作成し直してボタンにマクロを登録する必要がありますが、bookの数が多いと手間がかかります。簡単な方法があれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
表示-ツールバー-フォームにあるボタンを使っているのかな? Book1を閉じた状態で、Book2へコピーしたシート上のボタンを右クリックしてマクロの登録を見ると「C:\xxxxxx.xls!マクロ名」のようにフルパスでマクロの場所を指定した状態になっていると思います。 改善策として 1. Book1を名前を付けて保存でBook2にしてあげれば、こういった事は起こりません。 2. マクロを標準モジュールではなく該当のシートモジュールに書いてコピーすれば、ボタンに登録したマクロを指定し直すだけでOKとなり、標準モジュールのコピーやマクロのコピペ、書き直しが不要になります。 3. 表示-ツールバー-コントロールツールボックスの CommandButton を置き、ダブルクリックして Clickイベントに該当マクロを書けば、コピー後に何もしなくてもOKのハズです。 Private Sub CommandButton1_Click() '該当のマクロ(先頭の Sub xxx() と 最後の End Subを除く)を 'ここにコピペする。 End Sub ちなみに繰り返しの処理はループを憶えると便利ですよ。 Sub Test() For i = 1 To 31 Step 10 ActiveSheet.Range("A1").Value = i 'ActiveSheet.PrintOut Next i End Sub
その他の回答 (2)
- kinokoyasan2004
- ベストアンサー率59% (16/27)
はじめまして。#1の補足になりますが、 アクティブなシートにするには、 Sheets("Sheet1").xxxとかなっているのを、 ActiveSheet.xxxって感じでなおせばいいと思います。
お礼
回答ありがとうございました。 これからいろいろ勉強したいと思います。
補足
何度も済みません・・・こんな感じなんですけど、どこを・・・ Range("A1").Select ActiveCell.FormulaR1C1 = "1" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Range("A1").Select ActiveCell.FormulaR1C1 = "11" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Range("A1").Select ActiveCell.FormulaR1C1 = "21" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Range("A1").Select ActiveCell.FormulaR1C1 = "31" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Range("A1").Select ActiveCell.FormulaR1C1 = "1"
- edomin
- ベストアンサー率32% (327/1003)
VBAで作ってあるマクロ自体が「Sheet1」を参照するようになっているからだと思います。 VBEを開いて、シート1のマクロを「アクティブなシート」に変更してからコピーすれば大丈夫でしょう。
お礼
回答ありがとうございました。 なんとか解決しました。
補足
早速ありがとうございます。 今開いてみましたが、アクティブなシートに変更するやり方がわかりません。教えて下さいm(_ _)m
お礼
回答ありがとうございました。なんとかできあがりました。 1はシートの名前が変更できないのでダメでした。 2は標準モジュールやシートモジュールがわからないのでできませんでした。(勉強不足で・・・) ということで、3のやり方でやりました。 ループは書き換えができるかどうか不安だったので、 とりあえず今回は今までのマクロをコピーして使いました。 次にチャレンジします。 お世話になりましたm(_ _)m