こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAで作成した別ブックにVBAを記述したい

VBAで別ファイルの作成は下記で出来ているのですが、出来上がったファイルにVBAを記述する方法がわかりません。
具体的には一番下のSub TEST()を新しいブックの標準モジュールに記述したいのと、sheet1に
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "ChangeTEST"
End Sub
を入れたいです。
また
Private Sub Workbook_Open()
MsgBox "OpenTEST"
End Sub
も入れたいのです。
どうぞご教示ください。

Sub 複製()
Dim wb As Workbook, sc As Integer
sc = Application.SheetsInNewWorkbook

Application.SheetsInNewWorkbook = 1
Set wb = Workbooks.Add
Application.SheetsInNewWorkbook = sc

wb.Sheets("Sheet1").Select
ThisWorkbook.Sheets("Sheet1").Cells.Copy
wb.Sheets("Sheet1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

ActiveSheet.Buttons.Add(123, 195, 68.25, 15).Select
Selection.OnAction = "TEST"
Selection.Characters.Text = "TEST"
ActiveWorkbook.Close
ThisWorkbook.Activate
Sheets("Sheet1").Select
End Sub

Sub TEST()
MsgBox "TEST!!"
End Sub

よろしくお願いします。

投稿日時 - 2004-01-20 11:50:41

QNo.756026

困ってます

質問者が選んだベストアンサー

わたしも前前からやってみたいと思っていたので、ネットを検索して調べてみました。
こんな感じで出来るようです。

'マクロ挿入
With wb.VBProject.VBComponents.Item("ThisWorkbook").CodeModule
.InsertLines 1, "Private Sub Workbook_Open()"
.InsertLines 2, ""
.InsertLines 3, "   Msgbox""ブックが開かれましたよ!"""
.InsertLines 4, ""
.InsertLines 5, "End Sub"
End With

With wb.VBProject.VBComponents.Item("Sheet1").CodeModule

.InsertLines 1, "Private Sub Worksheet_Change(ByVal Target As Range)"
.InsertLines 2, ""
.InsertLines 3, " MsgBox ""セルの値が変更されましたよ!"""
.InsertLines 4, ""
.InsertLines 5, "End Sub"

End With

wb.VBProject.VBComponents.Add (1) 'Module1挿入
With wb.VBProject.VBComponents.Item("Module1").CodeModule

.InsertLines 1, "Sub TEST()"
.InsertLines 2, ""
.InsertLines 3, "   Msgbox""TESTしたよ!"""
.InsertLines 4, ""
.InsertLines 5, "End Sub"

End With

投稿日時 - 2004-01-20 17:13:51

お礼

ありがとうございました。
出来ました。

投稿日時 - 2004-01-25 13:27:53

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

もう答えは出ていますが、ひとつだけ。

マクロをボタンにはりつける Selection.OnAction = "TEST" ですが、作成先である新しいブックの名前まで入れないと作成元のブックのマクロにリンクされてしまうようですよ。念のため。

投稿日時 - 2004-01-25 13:38:43

お礼

ご親切にありがとうございました。
ええ、ためしたところそうでした。
たすかります。

投稿日時 - 2004-01-25 13:44:52

あなたにオススメの質問