• 締切済み

マクロを他のブック上で実行できなくなった

あるマクロを作成して、シート上の図形に登録します。 (たとえば、Msgboxなど簡単なマクロです。図形を押すとメッセージボックスが表示されますよね) そのシートを新規ブックにコピーして、図形を押してもマクロが実行できません。 図形に登録されたマクロを調べると、新規ブックのマクロとして設定されてしまってます。 これはどこかの設定を変更すると治るのでしょうか? (最近まで出来てたのに突然出来なくってしまったのです) 環境はExcel2007。OSはWindows7です。 よろしくお願いします。

みんなの回答

回答No.2

そのマクロ (というか VBA のプログラム) がどこに書かれているかによると思います。 例えば。。。 新規 Excel ブックの Sheet1 に図形を作成し、図形を右クリックして [マクロの登録] をクリック。 「マクロの登録」ダイアログにて [新規作成] をクリックすると VB Editor が開き、プログラムを書ける状態になりますが、おそらくは「標準モジュール」の "Module1" って所に書くようになっていると思います。 この状態だと Sheet1 上の図形をクリックすると、Module1 に書かれたプログラムを呼び出すように設定されます。 この Sheet1 を別のブックにコピーしても Module1 まではコピーされないため質問文にあるような現象になります。 先に VB Editor で Sheet1 のコードモジュールにプログラムを書き、Sheet1 上の図形からこのプログラムをマクロ登録した場合、Sheet1 を別のブックに持って行ってもプログラムコードも一緒に移動します。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>そのシートを新規ブックにコピーして、図形を押してもマクロが実行できません。 「シートを」移動・コピーすると,そのようになります。 設定の問題ではなく,エクセルでは最初からそういう具合に動作します。変更する方法はありません。 ○マクロを登録した図形をコピーする ○マクロを登録した図形が載っている「セル範囲」をコピーする と,元のブックのマクロが登録されたままになり,実行も出来ます。 ●お薦めはしませんが,図形に登録するマクロをシート名タブを右クリックしてコードの表示を選んで現れたシートに記録しておくと,シートを移動・コピーしても「そのシートにコードが憑いている」ので,マクロを実行できます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロを実行すると2つのBookで実行されてしまう

    AというBookとBというBookを同時に開いています。 どちらにもそれぞれ違った複数のマクロを登録しています。 マクロの中にはAの内容をBにコピーするというマクロもありますので、この2つは同時に開いておく必要があります。 困っているのはAのマクロを実行するとBでも同じように実行されてしまうのです。 マクロによってはその現象が起きないマクロもあります。 逆にBのマクロを実行してもAでは何も起きません。 Aのマクロを作成登録してる時にBも開いていたからでしょうか? この現象がいつから起きたのか分かりません。 例えばAの表の内容を一括で消すマクロを実行すると、 Bの方でも消えてしまうのです。 Aのマクロの内容を見てもBでも動作させるような内容はありません。 何度おこなっても同じです。 どうすれば元に戻せますか? 数時間かけて作成したマクロが無駄になってしまい困っています。 宜しくお願いします。

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

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

  • Excel2007 他ブックに対してマクロを実行

    Excel2007を使用しています。 あるシートに対して並び替えを行うマクロを作り、ちゃんと動作している事を確認しました。 ちなみに、以下のようなマクロです。 --------------------------------------------------------------------------------- Sub Macro2() Dim a As Range '(1)部のユーザー設定リスト追加 Application.AddCustomList ListArray:=Array("A部", "B部", "C部", "D部") '(2)部はどこ列か Set a = Range("1:1").Find(what:="部", LookIn:=xlValues, lookat:=xlPart) If a Is Nothing Then MsgBox "部が見つかりません" Exit Sub Else MsgBox a.Column & "列に部を発見しました" End If '(3)取得した部列基準で全体の並べ替えを行う a.CurrentRegion.Sort key1:=a, order1:=xlAscending, Header:=xlYes, ordercustom:=(Application.CustomListCount + 1) Application.DeleteCustomList (Application.CustomListCount) End Sub --------------------------------------------------------------------------------- 動作↓ (1)ユーザーリストの設定 (2)シートの見出し行で、「部」を含むセルを検索 (3)そのセルを含む列を基準に、(1)で設定した順にソート このマクロを使用して、 (1)並び替えを行いたいエクセルデータ(A)を用意 (2)新しく作成したブック(B)にファイルを参照するマクロ(ファイルを自分で選ぶようにダイアログを表示させたい)と、そのファイルに対して 並び替えを行うマクロ(既に作成済み)を作成 (3)ブック(B)からデータ(A)を参照 (4)並び替えを行うマクロを実行させ、その結果を別ファイルで保存 という事をさせたいのですが、どのようなマクロを作成すればよいか検討が付きません。 分りにくい説明で申し訳ございませんが、どなたかヒントをいただけたらと思います。 宜しくお願いしますm(_ _)m

  • アクティブなブックのマクロの実行について

    現在使用しているエクセルのブックがあり、ブック名はA(Ver1.0)とします。 このブックにApplication.Run "'A(Ver1.0).xls'!(1)"…Application.Run "'A(Ver1.0).xls'!(20)"というマクロがあります。 ブック名をマクロ実行前に必ず変更しなければならなくて、そのブック名は毎回違ったものになります。 わざわざブック名を変更せずに、現在開いているブックのマクロを実行するという風にしたいのですがどうしたらいいですか? よろしくお願いします。

  • エクセル マクロで別のブックに貼り付けたい!

    作成したシートを別のブック(既存)にマクロを使って貼り付けたい のですが、いろいろ調べた結果以下のようにはすることができました。 ---------------------------------------------------------------- Sub SaveSheet() Dim sFileName As String 'ファイル名の設定 sFileName = "C:\a\test.xls" 'シートをコピーして新規ブックを作成 Sheets(Array("Sheet1", "Sheet2")).Copy '作成したブックの保存 ActiveWorkbook.SaveAs sFileName End Sub ---------------------------------------------------------------- これはとあるサイトで見つけたもので、私自身が作成したものでは ありません。 このマクロの問題は、 ○あらたにブック(シート)が作成されること (マクロ実行時は上書きになるので、変更できなくても使えないわけ ではない) ○元データはシート丸ごとであり、セル範囲を選択できない。 ○貼り付けるシートにおいても、任意の場所を起点とできない。 ということです。 整理しますと、『作成したシートの任意のセル範囲を、別に存在する ブックに、任意のセルを起点として貼り付けたい』 ということです。 どうかよろしくお願いします。m(_ _)m

  • excel マクロが実行できません!

    タイトルどおりなのですが、 以前 excel2002 で作成したマクロを excel2000 の pc に copy し実行した所、 メッセージボックスで 「このプロジェクトのマクロは無効に設定されています。マクロを有効にする方法についてはオンラインヘルプまたは ホストアプリケーションのドキュメントを参照してください。」 となります。 ヘルプがこの pc から表示できませんので、どなたかご教授して下さい。

  • 新しく開いたブックをアクティブにするマクロ

    マクロ 新しく作ったブックをアクティブにする マクロ初心者です。 マクロを使って同階層にあるファイルのアクティブのシートを ひとつのブックにコピーして保存するマクロを作りたいと思ってます。 他の質問を参照して下記のコードを途中まで作成しました。 参照した質問では、 マクロの入っているブックにシートをコピーするようでしたが、 そうすると保存した時にマクロも保存されてしまうので 私なりに調べて、新しいブックにシートコピーするようにしましたが、 この記述の後、新しいブックをアクティブにする記述がわからず、 保存できなくなってしまいました。 ここまで終わるとマクロの入っているブックがアクティブになって終わります。 このあと新しく開いたブックをアクティブにして、 ブックのsheet1~3を削除して、名前をつけて保存したいのですが 開いたブックをアクティブにするマクロをご伝授ください。 あたらしくブックをつくるとbook1~・・・と名前が変わってしまうので 変数で名づけたいのですが、やり方が良くわかりませんのでよろしくお願いします。 何卒よろしくお願いします。 Sub consolid_test() Dim shCnt As Integer Dim Wb As Workbook Dim i As Integer Dim sh As Worksheet Dim nSh As Worksheet Dim fName As String Dim ka As String Application.ScreenUpdating = False '画面更新を一時停止 Application.DisplayAlerts = False Set mb = Workbooks.Add '新しいコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fName = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fName = Empty '全て検索 If fName <> mb.Name Then 'ブック名がこのブックの名前でなければ Set Wb = Workbooks.Open(myfdr & "\" & fName) 'そのブックを開きwbとする。 Wb.ActiveSheet.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く ActiveSheet.Name = Range("B16") 'シート名の変更 ActiveSheet.Unprotect 'シート全体をコピーして値にする Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Wb.Close (False) '保存の有無を聞かずに保存しないで閉じる N = N + 1 'ブック数をカウント End If fName = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す ・ ・ ・ ・

  • マクロの実行について

    OSはXPです。 Microsoft Office Excelで作成したマクロを実行しようとすると、次のようなメッセージが表示されます。「セキュリティの設定により、マクロが無効にされました。マクロを実行するには、このブックを 再度開いて、マクロを有効にするよう選択する必要があります。」 解決方法について教えていただけますでしょうか?よろしくお願いいたします。

  • 他のブックのマクロを呼び出すと他のブックの画面がアクティブになってしまう。

    エクセルのツールバーにボタンを2つ作って他のブック1,2のマクロをそれぞれ割り当てました。 エクセルの表を開いておいてツールバーから マクロ1(編集・出力)を呼び出すとブック1がアクティブになってしまい真っ白のシートが見えてしまいます。 もう一方のブック2のマクロ2はフォームを表示するマクロですがそちらはバックに隠れています。 以前同様にシート上のCH(13)を消すマクロを使っていた時もバックに隠れていました。 Application.ScreenUpdating = Falseを入れましたが一瞬ですがやはりアクティブになります。 見た目も悪いので表示したくないし、ブック1と2で動作が違う理由がわかりません、 マクロ1はこれです。 ブック1のcreateというマクロを使うのが目的です。 Sub Output() Application.ScreenUpdating = False Call create MsgBox "完了しました。" ThisWorkbook.Close End Sub マクロ2 Sub Form_Open() Frm_Form1.Show vbModeless End Sub つまらない質問ですが気になるのでよろしくお願いします。

  • エクセルのマクロが実行されない。

    市販本(簿記の本)についているCD-ROMを開いたところ、↓のメッセージが出て、開きません。 『このブックにあるマクロは、セキュリティレベルが高に設定されており、デジタル著名がされていないかまたは安全なものとして確認されていないため利用できません。マクロを実行するには、著名するか、またはセキュリティレベルを変更する必要があります。詳細については、ヘルプを参照にしてください」 どうすればいいのか分からないので、詳しい方教えて下さい。よろしくお願いします。 ちなみにXP、EXCEL2002です