• ベストアンサー

VBA 他のブックから図形にマクロを登録するマクロ

別のブックから複数あるブックを開いてボタンを作りマクロを登録し、保存して閉じるということを繰り返したいのですが、ボタンを作るところまではできたのですが、ボタンにマクロを登録する際に下記の="A.xlsm!マクロ名"の部分のAを変数もしくは"\\〇〇\" & .Cells(I, "B") & ".xlsm"のように変更したいのですが、できません。 ご教示頂ければと存じます。何卒宜しくお願い致します。 Sheets("〇〇").Shapes("Button 4").OnAction = "A.xlsm!マクロ名"

  • tknw
  • お礼率50% (1/2)

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.2

Aの中で「'」で囲ったほうが簡単かも Dim A As String A = "'C:\TEST\" & .Cells(i, "B") & ".xlsm'" Sheets("○○ ").Shapes("Button 4").OnAction = A & "!マクロ名"

tknw
質問者

お礼

ご教示頂き誠にありがとうございました。 独学でおこなっており、全然わかりませんでした。 本当に助かりました。ありがとうございました。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.1

Dim A As String A = "C:\TEST\" & .Cells(i, "B") & ".xlsm" Sheets("○○").Shapes("Button 4").OnAction = "'" & A & "'!マクロ名" で試してみてください。

関連するQ&A

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • VBA シートをコピー後、ボタンにマクロ登録

    お世話になっております。 Excel2003を使用しております。 分かる人にはすぐ分かる問題かもしれませんが、 良くわからないため教えて下さい。 シートを別ブックにコピーします。(ここまでは出来ています。) 元々あったボタンを選択し、 マクロを登録しなおそうとするも、上手く行かず… Dim StaticBook as Workbook と宣言し、 コピー先のブックを選別?できるようにしています。 そのため、シートをコピーした後に With StaticBook.ActiveSheet   .Shapes("Button 1").Select      Selection.OnAction = StaticBOOK.Name & "!Sheet2.保存_Click" .Shapes("Button 2").Select Selection.OnAction = StaticBOOK.Name & "!Sheet2.再編集_Click" .Range("A1").Select End With としてみたのですが、エラーが表示されます。 ButtonクラスのOnActionプロパティを設定できません。と表示されます。 元々、コピーすれば上手く動くとおもっていたのですが、 ボタンをクリックしたときの参照先が コピー元のブックのままになっておりこれの改善方法がしりたいのです。 調べてみてもあまり良く分からず… 回答お願い致します!

  • 他ブックを実行するマクロ

    あるexcelファイル(ブック名「自動操作.xlsm」)からべつのexcelファイル(ブック名「a.xlsm」)というファイルを実行するマクロを組んでいます。 Application.Runを用いて「自動操作.xlsm」のコードを以下のように記述しました。 ※「\」は半角の円マークだと考えてくれればいいです。ここで半角の円マークをかいても\と表示されます。また、自動操作とaは同じディレクトリにあります。 Sub Test1() Application.Run "'C:Users\ディレクトリ名\a.xlsm'!test" End Sub また、「a.xlsm」は以下のように記述しました。 Sub test() Dim i As Integer For i = 1 To 5 '移動元ファイルパスの設定 Cells(i, 1) = i Next End Sub ただ1~5行にその行数を記入するマクロです。 a.xlsmを開いた状態でこれを実行すると、「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 a.xlsmを閉じた状態で実行すると、「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」とでます。 いったいなにを間違えているのでしょうか。

  • Excel VBAでツールバーにマクロを登録したい

    自作のツールバーをブックに添付し、 スタートアップにマクロを書いたブックを保存し(起動して非表示にしてあります)、 そのマクロをツールバーの各ボタンに登録しようとしています。 下記のようなコードを書いたのですが、ツールバーに作成したボタンにはマクロが登録できるのですが、 サブメニュー内のボタンには登録できません。 Dim MyWB, NBar MyWB = "stampB.xls" NBar = "stampB1.0" For i = 1 To Application.CommandBars(NBar).Controls.Count  'ボタンのキャプションと同じ名前のマクロを登録  With Application.CommandBars(NBar).Controls.Item(i)   .OnAction = MyWB & "!" & .Caption  End With Next i これをどのように改良したら、サブメニュー内のボタンにもマクロを登録できるようになりますでしょうか? ご存知の方どうぞよろしくお願いします。

  • エクセルVBAで他のbookのセルcellsで参照

    エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value  '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value  '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value  '(5) ok End Sub

  • エクセル ブック間コピー マクロ

    ブックA(ブック名は固定)のシートA(シート名は毎回違います)を ブックB(ブック名は固定)の一番左へコピーしたいのですがうまくいきません。 動作 :シートAでマクロを実行しブックBへシートのコピー(挿入)します。 まず第一段階のブックAのシートAをブックBへのコピーがうまくいきません。 シートAが固定シート名ならコードは Sheets("A").Select Sheets("A").Copy Before:=Workbooks("B.xls").Sheets(1) ですが・・・・ Sheets("A").SelectをWith ActiveSheet.Selectにすれば良いのですか? 申し訳ないのですが、後教授お願いします。

  • EXCEL2000 VBA 他のブックのマクロを制御したい

    いつもお世話になっております。 http://okwave.jp/qa4460333.html 上記の質問を参考に複数プロセスを起動してデータの処理を行っているんですが、複数プロセスを実行している時に別のブックのマクロ(マクロAとします)を実行するとマクロAがフリーズするんです(応答なし)。 マクロA自体は1,2分で終わるマクロですが、1日に数回実行しなければなりません。 複数プロセスで実行しているマクロをEscキーで中断すれば問題なくマクロAは実行できるんですが、出来ればそのようにしたくないです。 マクロAから複数プロセスで実行中のマクロを中断、継続の制御が出来ないでしょうか。 よろしくお願いいたします。

  • 他ブックのセルの値をリンクさせたい

    Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

  • マクロ実行時、非表示シートを表示させたくない

    ファイル[testBOOK]の中に(sheet1)(sheet2)があり (sheet2)は非表示,ブック保護されています。 (sheet1)にあるマクロAAボタンで ・[図A]を非表示 ・[図B]を表示 ・マクロBBを実行 するようになっています。 --------------------------------------- Sub AA() '≪非表示≫ ActiveSheet.Shapes("図A").Visible = False '≪表示≫ ActiveSheet.Shapes("図B").Visible = True 'ブック保護解除 ActiveWorkbook.Unprotect 'マクロBB実行 Sheets("sheet2").Visible = True Sheets("sheet2").Select Application.Run "testBook.xlsm!BB" ActiveWindow.SelectedSheets.Visible = False 'ブック保護 ActiveWorkbook.Protect End Sub ---------------------------------------- マクロBBとは[sheet2]の中にある ・[図A]を非表示 ・[図B]を表示 です。 上記のマクロを実行させると(sheet2)が瞬間的に表示されてしまうのですが、 これを表示させないようにすることはできないでしょうか?

  • Excel マクロで使用済みのボタンを消したい。

    マクロで使用済みのボタンを削除したいと考えています。 毎回ボタンの数が同じ場合は作れたのですが、 ボタンの数が場合によって異なります。 具体的にはD5セルより下にあるボタンを削除したいと考えています。 ボタンを作る時のマクロは Set ws1 = Workbooks("ブックA").Worksheets("Sheet1") Set ws2 = Workbooks("ブックB").Worksheets("Sheet1") i = 2 j = 5 Do Until ws1.Range("B" & i) = "" ws2.Range("D" & j).Value = ws1.Range("B" & i).Value With ActiveSheet.Buttons.Add(Cells(j, 4).Left + 1, Cells(j, 4).Top + 1, _ Cells(j, 4).Width - 1, Cells(j, 4).Height - 1) .Name = "いの" & i - 1 .OnAction = "Select" .Characters.Text = Range("D" & j) End With i = i + 1 j = j + 1 Loop といった感じで、ブックAのB列のデータ数だけ、 ブックBのD5から下に値をコピーし、 その上にセルサイズに合わせてボタンを作り、 Nameを上から順に「いの1」「いの2」・・・、表示はボタンの裏に隠れている値をつけ、 ボタンにマクロ「あいうえお」を登録します。 次にボタンをクリックしたときに、 上の工程で作られたボタンを削除したいと考えています。 a = 1 Do Until ActiveSheet.Shapes("Order" & a) = "" ActiveSheet.Shapes("Order" & a).Delete a = a + 1 Loop b = 5 Do Until Range("D" & b) = "" Range("D" & b).ClearContents b = b + 1 Loop Call あいうえお End Sub ボタン裏のセルは削除できたのですが、 肝心のボタンの削除は出来ませんでした。 どなたかご教授していただければ大変助かります。 宜しくお願いします。

専門家に質問してみよう