• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelでマクロシートをコピーしたとき)

Excelでマクロシートのコピー方法とbook1の開かずにマクロを実行する方法

このQ&Aのポイント
  • Excelでマクロシートをコピーする方法とbook1の開かずにマクロを実行する方法についてまとめました。
  • マクロシートをコピーするためには、book1のsheet1のセルA1に「1」を入力しプリントアウトし、A1に「11」を入力しプリントアウトする操作を「31」まで繰り返します。
  • book2にマクロシートをコピーした場合、book1が開いてしまう問題があります。book1を開かずにbook2でマクロを実行するためには、book2でマクロを作成し直してボタンにマクロを登録する必要がありますが、bookの数が多いと手間がかかります。簡単な方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.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

gonji
質問者

お礼

回答ありがとうございました。なんとかできあがりました。 1はシートの名前が変更できないのでダメでした。 2は標準モジュールやシートモジュールがわからないのでできませんでした。(勉強不足で・・・) ということで、3のやり方でやりました。 ループは書き換えができるかどうか不安だったので、 とりあえず今回は今までのマクロをコピーして使いました。 次にチャレンジします。 お世話になりましたm(_ _)m

その他の回答 (2)

回答No.2

はじめまして。#1の補足になりますが、 アクティブなシートにするには、 Sheets("Sheet1").xxxとかなっているのを、 ActiveSheet.xxxって感じでなおせばいいと思います。

gonji
質問者

お礼

回答ありがとうございました。 これからいろいろ勉強したいと思います。

gonji
質問者

補足

何度も済みません・・・こんな感じなんですけど、どこを・・・ 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)
回答No.1

VBAで作ってあるマクロ自体が「Sheet1」を参照するようになっているからだと思います。 VBEを開いて、シート1のマクロを「アクティブなシート」に変更してからコピーすれば大丈夫でしょう。

gonji
質問者

お礼

回答ありがとうございました。 なんとか解決しました。

gonji
質問者

補足

早速ありがとうございます。 今開いてみましたが、アクティブなシートに変更するやり方がわかりません。教えて下さいm(_ _)m

関連するQ&A