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

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

excelでマクロシートをコピーしたとき

excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

  • gonji
  • お礼率96% (241/250)

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

  • ベストアンサー
  • 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

  • Book間でのコピー

    エクセルで以下の処理を実行するマクロを知りたいのですが。 Book1とBook2が開いています。 Book2のSheet1のA1~A10を、Book2のSheet1のA1~A10にコピーします。 この処理を任意の2つのBook間で実行するためにはどんなマクロになるでしょうか。(Book3とBook5で行ったり、Book25とBook46で行ったり等) アクティブになってないBookからアクティブになっているBookにコピーするようにしたいのですが。 宜しくお願いします。

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

  • Excel マクロ シートをコピーするには

    初心者です。 今、Excelファイルが2つあります。 1つは、Book1で、Sheet1にA列だけ文字列の入った表があります。 セル  文字列 A3  AAA A4  BBB A5  CCC A6  DDD  :   : のような感じです。 もう1つ、Book2があり、それにはいろいろな単価表のシートが多数入っています。 そのシート名はBook1,Sheet1の表にある文字列と全く同じものもあります。(表にはないシート名のシートもあります) 今、Book1,Sheet1の表にある文字列と同じ名前のシートを Book2からBook1へコピーしたいのです。 Book1の表にある文字列は、必ずしもBook2にあるシート名と同じとはかぎらないので、 IFを使って、この文字列のシートがあればコピーする というふうにしたらよいかと思ったのですが、あまりに初心者のため、 条件文にどう書いたらよいのかで困ってしまいました。 お力添えを宜しくお願いします。

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • エクセル:マクロのコピー

    エクセル:マクロのコピー エクセルであるbook AにMACROAが入っています。 book BにMACROAをコピーしてもってきたい。どうすればいいですか。

  • Excel 違うBookのシートをコピーする

    Excelでわからないことがあり質問させていただきました。 原紙のBookに 資料のBookのシートをコピーさせたいのですが 資料Bookには シートが sheet1~sheet50まであり 原紙のBookにマクロのボタンやフォームを作成し 毎回資料のBookの違うシート名を選択しコピーをさせることは可能なのでしょうか? たとえば 原紙のシートに入力フォームを作り sheet名を入力 → 「コピー」のボタンを押すとコピーができる。 といった感じに・・・ フォームでなくてもリストなんかでもいいのですが・・・

  • エクセル-別のbookで同様のマクロ実行

    エクセル-別のbookで同様のマクロ実行 最初あるBook1に入っているmacro1はそのbook1のsheet1を処理するように作成しました。 次にBook1を開いたまま、Book2を開きそのsheet1に対してmacro1と同等の機能を実行したい場合は通常どうするのでしょうか。 (1) Book2にBook1のマクロをコピー (2) book2のマクロを開き、表示されるBOOK1 macro1を実行する。 (2) 場合でもうまくいくのでしょうか。Sheet1に対してやりたいことの論理は同じとします。試してみたらといわれそうですが、まず識者の説明をお聞きしたいのです。

  • エクセル:シート1のセルA1が0でなければ任意のマクロを実行したい

    エクセルマクロ(VBA)初心者です。よろしくお願いします。 (1)エクセルのsheet1のセルA1の値が”0(ゼロ)”でなければ、そのシート上で任意のマクロを実行し、ゼロであれば実行せずにsheet2へとぶ (2)同じようにsheet2のセルA1がゼロでなければ実効し、ゼロでなければsheet3へとぶ・・・の繰り返し(sheet50まであります。) このようなマクロ(標準モジュール)の書き方を教えてください。 よろしくお願いいたします。

  • Excelでブックをまたいでシートをコピーした時に、元のブックを参照させない方法

    Excelでブックをまたいでシートをコピーした時に、 元のブックを参照しないようにしたいです。 BOOK_AというブックのシートにBOOK_Aのブック内のセルを参照する式が ある場合、そのシートをBOOK_Bというブックにコピーすると、 式の中の参照先のセルを示す部分に自動的に[BOOK_A]が追加されて、 BOOK_Aを参照してしまいます。 ここではBOOK_B内のシートを参照してほしいので、そのままの式で コピーしたいのですが、可能でしょうか? よろしくお願いいたします。

専門家に質問してみよう