【やりたい事】
以下のコードを実行すると、実行するファイルではない別ファイルに
マクロのボタンが作成されます。同ボタンにはマクロが割当てられており、動きます
ですが、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も見ています
-
夏が終わったと感じる瞬間って、どんな時?
まだまだ暑い今日この頃。 しかしながら、もう夏は終わっている!……はず。 あなたが思う「夏が終わった!」エピソードを教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Excel 対象のセルに入力が無いとセルに入力できないようにしたい
Excel(エクセル)
-
Excelの数式の効率化について
Excel(エクセル)
-
【関数】スペースがいくつ入った後の文字列を取り出したい
Excel(エクセル)
-
-
4
【マクロ】顧客番号にて一致させ、情報を表へ上書きする為には
Excel(エクセル)
-
5
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
6
数字入力後他の文字等が表示される方法について
Excel(エクセル)
-
7
データチェックを行うエクセルマクロをおしえてほしい
Excel(エクセル)
-
8
再質問です。マクロの修正箇所を教えてください。
Excel(エクセル)
-
9
エクセルで数字の組み合わせを列記したい
Excel(エクセル)
-
10
Excelで数値を時間数に変換する関数について
Excel(エクセル)
-
11
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
-
12
エクセルマクロを教えてほしい(月別のシートを一つにまとめたい)
Excel(エクセル)
-
13
下記マクロでMsgBox 空白です。"の部分の メッセージボックスは現れるものの 空白です。の文字"
Excel(エクセル)
-
14
エクセルでの2項目比較および抽出方法について
Excel(エクセル)
-
15
条件付き書式でやりたいのですが
Excel(エクセル)
-
16
【マクロ】フォルダ内にあるPDFを合体させるには?有料版adobe必要?
Excel(エクセル)
-
17
【マクロ】AブックからBブックへセルの値コピーにおけるブックのアクティブについて
Excel(エクセル)
-
18
【ExcelVBA】UTF-8(BOM無)でCSV保存するには?
Excel(エクセル)
-
19
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
20
エクセル IF計算式?でしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】エラーが発生⇒実行時...
-
別のパソコンでエクセルのマク...
-
Excelからnotesメールを自動で...
-
コピーしたファイルのマクロを...
-
EXCEL マクロ クリップボードク...
-
ファイルリネームの良い知恵を...
-
マクロが入っているファイルを...
-
LaTeXのスタイルファイルの参考...
-
personal.xlsが「編集中のため...
-
エクセル2013vbaで、見えない名...
-
vbsについて
-
マクロを作成し、拡張子 .xlsm ...
-
エクセルのマクロを使ったファ...
-
エクセル終了時の保存確認メッ...
-
エクセルを閉じる時にマクロを...
-
エクセルファイルを自身のファ...
-
前任者が作成したであろうエク...
-
外部データを取り込むマクロ
-
Excelマクロ ファイル名が変わ...
-
Powerpointでランダムな数字の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
コピーしたファイルのマクロを...
-
エクセル終了時の保存確認メッ...
-
マクロを消すマクロは不可能?
-
別のパソコンでエクセルのマク...
-
昨日まで動いていたエクセルの...
-
VBA マクロ実行時エラー’1004Ra...
-
excelファイルに使われているVB...
-
Excelが勝手にシート移動してし...
-
マクロでマクロを削除する
-
外部データを取り込むマクロ
-
アクセスでファイルを開いたと...
-
エクセル2013vbaで、見えない名...
-
EXCEL マクロ クリップボードク...
-
Excelマクロ ファイル名が変わ...
-
エクセルファイルを自身のファ...
-
excelが別プロセスで起動してし...
-
Excelからnotesメールを自動で...
-
エクセルマクロ実行中に別ファ...
-
Excel2010 PERSONAL.xlsbの挙動...
おすすめ情報