
お世話になっております。
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プロパティを設定できません。と表示されます。
元々、コピーすれば上手く動くとおもっていたのですが、
ボタンをクリックしたときの参照先が
コピー元のブックのままになっておりこれの改善方法がしりたいのです。
調べてみてもあまり良く分からず…
回答お願い致します!
No.2ベストアンサー
- 回答日時:
こんにちは。
そのようなコードは書いたことがありませんし、きちんと考えたことがありませんでしたが、
コードをよく観ると
>StaticBOOK.Name & "!Sheet2.保存_Click"
このSheet2 は、オブジェクト名ですから、ただしく、Sheet2であればよいのですが、そうでない可能性が高いです。もちろん、シートに一意のオブジェクト名をつければよいはずですが、コピーをされるシートですから、名前付け管理していくのは面倒だと思います。それより、システム側のオブジェクト名を取るほうが早いと思います。例えば、このようなスタイルになるのではないでしょうか。
以下の .CodeName というのが、シートのオブジェクト名になります。
'//
Sub Test1()
Workbooks("Origine.xls").Activate '元のシートをアクティブにする
ActiveWorkbook.Worksheets("Sheet2").Copy Before:=Workbooks("Destin.xls").Sheets(1)
With ActiveSheet
.Shapes("Button 1").OnAction = .Parent.Name & "!" & .CodeName & ".保存_Click"
End With
End Sub
'//
回答ありがとうございました!
解決いたしました^^
どうしても上手く行かない…と思い
出来たシートに手入力でマクロ登録をし、
その部分をマクロ記録してみて、
フルパスや、設定の違いを確認してみました。
確認したところ、
ブック名の両側に
'' が必要なことが判明しました。
なので、
.Shapes("Button 1").OnAction = "'"&.Parent.Name & "'!" & .CodeName & ".保存_Click"
というコードに書き換えたところ上手く動作してくれました^^
ありがとうございました!
No.1
- 回答日時:
型宣言をした変数(StaticBook)に
現在アクティブなブック(ActiveWorkbook)をセットする必要があります
Sub マクロの再登録()
'型宣言
Dim StaticBook As Workbook
'宣言したWorkbook変数にアクティブブックをセットします
Set StaticBook = ActiveWorkbook
'StaticBookのアクティブシートに対しての処理
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
End Sub
この回答への補足
回答ありがとうございます。
元々,workbookとして設定し、
ブック名も設定してあり使えているのですが、
再度、ActiveWorkbookとして定義しなおさなければ
ならないのでしょうか?
実行してみたところ、上手く行きませんでした。
どうしても、同じようにエラーになっていまいます…
コピーした後のシートは、Sheet2とは限らないみたいで、
元々Sheet1~3は作成されていることがあり、
4以上も作成されている可能性があります。
試してみたところ、私の場合だと
コピー先にはSheet1,2,3が既にアリ、
コピーした後はSheet4(シート名)という設定になっていました。
このオブジェクト名?は取得できないのでしょうか…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/09 12:17
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
EXCELのボタンによるマクロの登録名にファイル名が入ってしまう
PowerPoint(パワーポイント)
-
-
4
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
5
オブジェクト名をVBAで指定する方法を教えてくださ
PowerPoint(パワーポイント)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
EXCEL_VBA 64bit版でのエラー
PowerPoint(パワーポイント)
-
8
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
9
エクセルでエラーが出て困っています。
Excel(エクセル)
-
10
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
11
コピーしたファイルのマクロを実行すると前のファイルが開く
Access(アクセス)
-
12
ExcelVBA AddinでOnAction
その他(Microsoft Office)
-
13
マクロボタンを別のファイルでも利用する方法
その他(Microsoft Office)
-
14
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
15
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
16
ExcelVBAで、ユーザーフォームを新規Bookにコピーしたい
IT・エンジニアリング
-
17
(Excel VBA)シートコピー時マクロはコピーしたくない
Excel(エクセル)
-
18
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
19
全ての変数を一気にリセットする方法はありますか?
PowerPoint(パワーポイント)
-
20
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
Excelの行をコピーして貼り付け...
-
エクセルの選択範囲以外を削除...
-
EXCELで別のブックから式をコピ...
-
EXCEL2007でシートをコピーする...
-
【エクセル】プルダウン設定の...
-
EXCELのVBAでシートコピーをし...
-
エクセルでシートを「移動また...
-
VBA 先頭文字の0(ゼロ)...
-
Excel 数式の保護をしたセルを...
-
ページの設定を別シートにコピ...
-
Excel Selectは使わない? VBA
-
VBA シートをコピー後、ボタン...
-
【Excel VBA】シートコピー時、...
-
Excel:マウスのドラッグ操作で...
-
CSVファイルについて質問です。
-
エクセルシートを別のエクセル...
-
エクセルで日報を作成したら大...
-
Excel シートのコピーの際、ペ...
-
ワークシートの移動またはコピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの行をコピーして貼り付け...
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
Excel シートのコピーの際、ペ...
-
エクセルでシートを「移動また...
-
【エクセル】プルダウン設定の...
-
エクセルのシートコピーした際...
-
エクセルシートを別のエクセル...
-
Excel 数式の保護をしたセルを...
-
エクセルの1シートの内容を複...
-
エクセルVBA 1行飛ばしで転記す...
-
CSVファイルについて質問です。
-
PDFファイルをコピーしてエクセ...
-
ページの設定を別シートにコピ...
-
ExcelVBAで、ユーザーフォーム...
-
【VBA】コピー&複数個所のペー...
-
エクセルのページをシートごと...
-
【Excel VBA】シートコピー時、...
おすすめ情報