【やりたい事】
以下のコードを実行すると、実行するファイルではない別ファイルに
マクロのボタンが作成されます。同ボタンにはマクロが割当てられており、動きます
ですが、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も見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel 対象のセルに入力が無いとセルに入力できないようにしたい
Excel(エクセル)
-
Excelの数式の効率化について
Excel(エクセル)
-
【関数】スペースがいくつ入った後の文字列を取り出したい
Excel(エクセル)
-
-
4
【マクロ】顧客番号にて一致させ、情報を表へ上書きする為には
Excel(エクセル)
-
5
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
6
再質問です。マクロの修正箇所を教えてください。
Excel(エクセル)
-
7
データチェックを行うエクセルマクロをおしえてほしい
Excel(エクセル)
-
8
数字入力後他の文字等が表示される方法について
Excel(エクセル)
-
9
エクセルマクロを教えてほしい(月別のシートを一つにまとめたい)
Excel(エクセル)
-
10
Excelで数値を時間数に変換する関数について
Excel(エクセル)
-
11
エクセルで数字の組み合わせを列記したい
Excel(エクセル)
-
12
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
-
13
下記マクロでMsgBox 空白です。"の部分の メッセージボックスは現れるものの 空白です。の文字"
Excel(エクセル)
-
14
【ExcelVBA】UTF-8(BOM無)でCSV保存するには?
Excel(エクセル)
-
15
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
16
【マクロ】AブックからBブックへセルの値コピーにおけるブックのアクティブについて
Excel(エクセル)
-
17
条件付き書式でやりたいのですが
Excel(エクセル)
-
18
エクセル IF計算式?でしょうか?
Excel(エクセル)
-
19
【マクロ】フォルダ内にあるPDFを合体させるには?有料版adobe必要?
Excel(エクセル)
-
20
エクセルでの2項目比較および抽出方法について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルを自身のファ...
-
エクセル終了時の保存確認メッ...
-
VBAを一度起動するとずっと出て...
-
Excelが勝手にシート移動してし...
-
コピーしたファイルのマクロを...
-
昨日まで動いていたエクセルの...
-
エクセルで印刷する方法 エクセ...
-
アクセスからエクセルファイル...
-
EXCEL マクロ クリップボードク...
-
別のパソコンでエクセルのマク...
-
excelファイルに使われているVB...
-
ワードのマクロを他のPCに移すには
-
エクセルVBAを使ってサーバ...
-
ワードマクロについて
-
アクセス マイクロソフトのマク...
-
エクセルマクロ実行中に別ファ...
-
別のdocmファイルのマクロを使...
-
エクセルの関数を使って、セル...
-
エクセルでマクロでテキストデ...
-
VBA マクロ実行時エラー’1004Ra...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
コピーしたファイルのマクロを...
-
エクセル終了時の保存確認メッ...
-
マクロを消すマクロは不可能?
-
別のパソコンでエクセルのマク...
-
昨日まで動いていたエクセルの...
-
VBA マクロ実行時エラー’1004Ra...
-
excelファイルに使われているVB...
-
Excelが勝手にシート移動してし...
-
マクロでマクロを削除する
-
外部データを取り込むマクロ
-
アクセスでファイルを開いたと...
-
エクセル2013vbaで、見えない名...
-
EXCEL マクロ クリップボードク...
-
Excelマクロ ファイル名が変わ...
-
エクセルファイルを自身のファ...
-
excelが別プロセスで起動してし...
-
Excelからnotesメールを自動で...
-
エクセルマクロ実行中に別ファ...
-
Excel2010 PERSONAL.xlsbの挙動...
おすすめ情報