お世話になっております。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。 長時間でも長距離でも結構です。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
EXCELのボタンによるマクロの登録名にファイル名が入ってしまう
PowerPoint(パワーポイント)
-
-
4
ExcelVBA AddinでOnAction
その他(Microsoft Office)
-
5
エクセルVBAで作成した別ブックにVBAを記述したい
Access(アクセス)
-
6
VBA This Workbookモジュールを別ファイルにコピーする方法
Visual Basic(VBA)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
9
EXCEL_VBA 64bit版でのエラー
PowerPoint(パワーポイント)
-
10
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
11
コピーしたファイルのマクロを実行すると前のファイルが開く
Access(アクセス)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
14
UserForm1.Showでエラーになります。
工学
-
15
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
16
エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの
Excel(エクセル)
-
17
エクセルでエラーが出て困っています。
Excel(エクセル)
-
18
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
19
EXCEL VBA シートをコピーする時にエラーが発生してしまう件
Excel(エクセル)
-
20
VBAでExcelの保存終了を取得したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
エクセルでシートを「移動また...
-
Excel 数式の保護をしたセルを...
-
【VBA】コピー&複数個所のペー...
-
エクセルのページをシートごと...
-
エクセルのワークシートをUSBメ...
-
エクセルVBA 1行飛ばしで転記す...
-
EXCELで別のブックから式をコピ...
-
EXCEL2007でシートをコピーする...
-
Excel シートのコピーの際、ペ...
-
ExcelVBAで、ユーザーフォーム...
-
Excelの行をコピーして貼り付け...
-
Excel VBA 複数シートを別ファ...
-
エクセルシートを別のエクセル...
-
EXCEL VBA シートをコピーする...
-
【Excel VBA】シートコピー時、...
-
VBA 先頭文字の0(ゼロ)...
-
【エクセル】プルダウン設定の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
Excelの行をコピーして貼り付け...
-
Excel 数式の保護をしたセルを...
-
エクセルの1シートの内容を複...
-
【VBA】コピー&複数個所のペー...
-
Excel シートのコピーの際、ペ...
-
ExcelVBAで、ユーザーフォーム...
-
エクセルのワークシートをUSBメ...
-
【エクセル】プルダウン設定の...
-
エクセルでシートを「移動また...
-
【Excel VBA】シートコピー時、...
-
エクセルVBA 1行飛ばしで転記す...
-
ページの設定を別シートにコピ...
-
エクセルのページをシートごと...
-
シートが保護されていないのに...
-
PDFファイルをコピーしてエクセ...
-
VBA シートをコピー後、ボタン...
おすすめ情報