【やりたい事】
以下のコードを実行すると、実行するファイルではない別ファイルに
マクロのボタンが作成されます。同ボタンにはマクロが割当てられており、動きます
ですが、2つのファイルが開いていて、実行されます
コードが保存されている、いろいろあり転記元.xlsmが開いている必要があります
ですので、マクロボタンを作る時に、マクロボタンが作成されるファイル
(240820_あいうえお.xlsx)にもマクロのコードが保存されるように出来ませんでしょうか?
⇒マクロボタンが作成されたファイル1つだけ開いている状態で、マクロを実行したいのです
ご存じの方、宜しくお願いします
【マクロを実行するファイル】
"C:\Users\2020\OneDrive\マクロ\コントロールファイル\いろいろあり転記元.xlsm"
【マクロボタンが作成されるファイル】
"C:\Users\2020\OneDrive\マクロ\240820_あいうえお.xlsx"
【別のブックにマクロが割当てられたボタンを作成のコード】
Sub Sample1()
Workbooks("240820_あいうえお.xlsx").Activate
With Workbooks("240820_あいうえお.xlsx").Worksheets("ボタン作成先シート").Buttons.Add(Range("E1").Left, _
Range("E1").Top, _
Range("E1:F1").Width, _
Range("E1:F2").Height)
.OnAction = "マクロプログラム"
.Characters.Text = "マクロボタン"
End With
End Sub
Sub マクロプログラム()
Dim lastrow As Long
lastrow = Workbooks("240820_あいうえお.xlsx").Worksheets("ボタン作成先シート").Cells(Rows.Count, 1).End(xlUp).Row
MsgBox lastrow
Range("A" & ActiveCell.Row & ":C" & ActiveCell.Row).Interior.ColorIndex = 15
Range("C" & ActiveCell.Row) = "削除"
Range("A" & ActiveCell.Row & ":C" & ActiveCell.Row).Cut Range("A" & lastrow).Offset(1, 0)
ActiveCell.EntireRow.Delete
End Sub
No.4ベストアンサー
- 回答日時:
ボタンとマクロを登録するブックは、240820_あいうえお.xlsx ということですが、マクロを登録すると拡張子を.xlsmにしないといけないので、
最初から、240820_あいうえお.xlsmを作成しておき、そのブックに
ボタンとマクロを登録するようにすることは可能でしょうか。
そうであれば、以下のようにしてください。
以下のマクロを標準モジュールに登録してください。
Public Sub マクロ登録()
Dim trg_book_name As String
Dim tb As Workbook
Dim ts As Worksheet
Dim code As String
trg_book_name = "C:\Users\2020\OneDrive\マクロ\240820_あいうえお.xlsm"
Set tb = Workbooks.Open(trg_book_name)
Set ts = tb.Worksheets("ボタン作成先シート")
'ボタンの割り付け
With ts.Buttons.Add(Range("E1").Left, Range("E1").Top, Range("E1:F1").Width, Range("E1:F2").Height)
.OnAction = "マクロプログラム"
.Characters.Text = "マクロボタン"
End With
'マクロの登録(コピー元のマクロはModule1に可能納済みであること)
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
code = .Lines(.CountOfDeclarationLines + 1, .CountOfLines - .CountOfDeclarationLines + 1)
End With
With tb.VBProject.VBComponents.Add(1)
.CodeModule.AddFromString code
End With
tb.Save
tb.Close
End Sub
尚、標準モジュールのModule1には、以下のマクロを登録しておいてください。(これがコピーされます)
Sub マクロプログラム()
Dim lastrow As Long
lastrow = Workbooks("240820_あいうえお.xlsm").Worksheets("ボタン作成先シート").Cells(Rows.Count, 1).End(xlUp).Row
MsgBox lastrow
Range("A" & ActiveCell.Row & ":C" & ActiveCell.Row).Interior.ColorIndex = 15
Range("C" & ActiveCell.Row) = "削除"
Range("A" & ActiveCell.Row & ":C" & ActiveCell.Row).Cut Range("A" & lastrow).Offset(1, 0)
ActiveCell.EntireRow.Delete
End Sub
ご指導ありがとうございます
以下のコードにてデバックとなります
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
・マクロを登録すると拡張子を.xlsm⇒実施しました
・標準モジュールのModule1には、以下のマクロを登録
⇒いろいろあり転記元.xlsmのブックに保存しています
アドバイスありましたら、お願いします
No.5
- 回答日時:
>以下のコードにてデバックとなります
>With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
その時のエラーメッセージは、何が表示されていますか。
>・標準モジュールのModule1には、以下のマクロを登録
>⇒いろいろあり転記元.xlsmのブックに保存しています
Module1にいろいろなプロシージャを登録しているように見えます。
Sub マクロプログラム()~End Subのみを登録してください。
もし、それが大変なら、新規にModuleを追加してください。
それをModule2とします。(実際にいくつになるかはあなたの環境できまりますが、例としてModule2で説明します)
そのModule2へSub マクロプログラム()~End Subのみを登録してください。
そして、
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
を
With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule
に変えてください。
【デバックについて】
解決しました
エラーの内容をよく、見ていませんでした
お手数をおかけしました
実行時エラー 1004:
プログラミングによるVisual Basicプロジェクトへのアクセスは信頼性に欠けます
⇒「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」をチェックする
⇒解決しました
【マクロボタンの設置について】
マクロボタンの設置やモジュールのコピーは出来たのですが
ボタンのマクロの登録(Sub マクロプログラム)先が、コピー先ではなく
コピー元のマクロを登録しています
何とか、240820_あいうえお.xlsmにコピーされたモジュールを登録するように
は、どんな方法がありますでしょうか
ご教授お願いします
No.3
- 回答日時:
No1です。
>もし、ヒントありましたら、宜しくお願いします
ヒントを持っているのは、質問者様の方です。
こちらには何も情報がないので、ほとんどわかりかねます。
例えば、エラーメッセージ。
仮に「インデックスが~」等であれば、指定(したつもりの)オブジェクトが見つからない(=存在しない)ということになります。
>以下でエラーとなりうまく出来ませんでした
単純に、With構文でオブジェクトの参照ができていないだけと推測されます。
属性参照がネストしているので、分解して、親オブジェクトから順にどこまで取得できているのかを調べれば、具体的なエラーの原因かわかるはずです。
プログラムを作成しようと思うのなら、デバッグの方法ぐらいは覚えましょう。
いつもご指導ありがとうございます
エラーの意味を理解していませんでした
全てデバックではなく、ご指摘のとおり
エラーメッセージが出た後に、デバック表示となっているんですね
>例えば、エラーメッセージ。
No.1
- 回答日時:
こんにちは
ご質問の内容がよくわかりませんけれど・・
>マクロボタンが作成されたファイル1つだけ開いている状態で、
>マクロを実行したいのです
OnAction属性を設定する際に、ブックのフルパス付でマクロを登録しておけば、実行時に当該ブックが開かれて実行されるようになります。
(最初にマクロのあるブックが開かれます)
単体のブックだけで、実行できるようにしたいのであれば、マクロそのものをコピペするなりしておく必要がありますが、こちらの場合には、拡張子をマクロ付きのブック(=.xlsm)に変更する必要があるでしょう。
コピペの要領としては、こんな感じでしょうか。
http://www.officetanaka.net/excel/vba/vbe/07.htm
リンクにて、マネして実施しましたが、以下でエラーとなり
うまく出来ませんでした
やりたい事は、マクロ(コード)の別ブックへのコピーです
ハンドではなく、マクロを使ってです
もし、ヒントありましたら、宜しくお願いします
With Workbooks("Book1.xlsm").VBProject.VBComponents("Sample1").CodeModule
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
昔のあなたへのアドバイス
過去のあなたへ一度だけアドバイスを送れる電話があったとします。 もしあなたがその電話を手にしたら、いつの自分にどのようなアドバイスを送りますか?
-
Excel 対象のセルに入力が無いとセルに入力できないようにしたい
Excel(エクセル)
-
Excelの数式の効率化について
Excel(エクセル)
-
【マクロ】顧客番号にて一致させ、情報を表へ上書きする為には
Excel(エクセル)
-
-
4
数字入力後他の文字等が表示される方法について
Excel(エクセル)
-
5
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
6
データチェックを行うエクセルマクロをおしえてほしい
Excel(エクセル)
-
7
Excelで数値を時間数に変換する関数について
Excel(エクセル)
-
8
エクセルで数字の組み合わせを列記したい
Excel(エクセル)
-
9
エクセルマクロを教えてほしい(月別のシートを一つにまとめたい)
Excel(エクセル)
-
10
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
-
11
【関数】スペースがいくつ入った後の文字列を取り出したい
Excel(エクセル)
-
12
再質問です。マクロの修正箇所を教えてください。
Excel(エクセル)
-
13
【ExcelVBA】UTF-8(BOM無)でCSV保存するには?
Excel(エクセル)
-
14
条件付き書式でやりたいのですが
Excel(エクセル)
-
15
下記マクロでMsgBox 空白です。"の部分の メッセージボックスは現れるものの 空白です。の文字"
Excel(エクセル)
-
16
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
17
【マクロ】AブックからBブックへセルの値コピーにおけるブックのアクティブについて
Excel(エクセル)
-
18
エクセル IF計算式?でしょうか?
Excel(エクセル)
-
19
【マクロ】ファイル名の変更について
Excel(エクセル)
-
20
エクセルの関数について教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロでマクロを削除する
-
昨日まで動いていたエクセルの...
-
マクロを消すマクロは不可能?
-
エクセル終了時の保存確認メッ...
-
excelファイルに使われているVB...
-
VBAを一度起動するとずっと出て...
-
エクセル2013vbaで、見えない名...
-
エクセルのマクロについて教え...
-
エクセルマクロ実行中に別ファ...
-
エクセルでファイルを表示した...
-
コピーしたファイルのマクロを...
-
VBA マクロ実行時エラー’1004Ra...
-
EXCEL マクロ クリップボードク...
-
Excel VBAのゴミ?処理
-
Excel>マクロを使っていないは...
-
Excelでこの式の意味をおしえて...
-
別のパソコンでエクセルのマク...
-
フォルダ内全ファイルの文字数...
-
EXCELで日付を自動でファイル名...
-
エクセルマクロを有効にしない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル終了時の保存確認メッ...
-
昨日まで動いていたエクセルの...
-
コピーしたファイルのマクロを...
-
【マクロ】マクロが割当てされ...
-
VBAを一度起動するとずっと出て...
-
別のパソコンでエクセルのマク...
-
VBA マクロ実行時エラー’1004Ra...
-
アクセスでファイルを開いたと...
-
excelファイルに使われているVB...
-
エクセルマクロ実行中に別ファ...
-
マクロを消すマクロは不可能?
-
外部データを取り込むマクロ
-
エクセルファイルを自身のファ...
-
excelが別プロセスで起動してし...
-
【マクロ】エラーが発生⇒実行時...
-
EXCEL マクロ クリップボードク...
-
Excelが勝手にシート移動してし...
-
Excel2010 PERSONAL.xlsbの挙動...
-
エクセル2013vbaで、見えない名...
-
excelでpersonal.xlsを常に開く...
おすすめ情報