|
オブジェクト変数を駆使して修正すると以下のようになります。
ご参考までに・・・
Private Sub Workbook_Open()
Dim w_シート名 As String
Dim objButton As OLEObject
Dim wbkBook(1 To 2) As Workbook
Dim wshTargetSheet As Worksheet
Application.ScreenUpdating = False '画面更新の停止
Application.DisplayAlerts = False '警告メッセージ非表示
wbkBook(1) = ThisWorkbook
'ブックオープン
wbkBook(2) = Workbooks.Open("C:\WINDOWS\デスクトップ\単品.XLS")
'シートコピー
wbkBook(2).Worksheets("Sheet1").Copy Before:=wbkBook(1).Worksheets(1)
wbkBook(2).Close 'ブッククローズ
With wshTargetSheet
.Rows("1:5").Insert Shift:=xlDown '行の挿入
wbkBook(1).Sheets("Sheet3").Range("A1:CL5").Copy _
Destination:=.Range("A2") 'データのコピー
.Rows(1).RowHeight = 56.25 '行幅調整
'コマンドボタンの挿入
Set objButton = .OLEObjects.Add _
(ClassType:="Forms.CommandButton.1", Link:=False, _
DisplayAsIcon:=False, Left:=108, Top:=14.25, _
Width:=81, Height:=33.75)
End With
objButton.Object.Caption = "エラーチェック" '表示名変更
'マクロの記述
With wbkBook(1).VBProject.VBComponents.Item("Sheet1").CodeModule
'マクロの 1 行目です。同様に 5 行目まで書き込みます。
.InsertLines 1, "Private Sub CommandButton1_Click()"
.InsertLines 2, ""
.InsertLines 3, " MsgBox ""セルの値が変更されました"""
.InsertLines 4, ""
.InsertLines 5, "End Sub"
End With
wbkBook(1).Save '保存
オブジェクト変数初期化
Set wbkBook(1) = Nothing
Set wbkBook(2) = Nothing
Set wshTargetSheet = Nothing
Set objButton = Nothing
Application.DisplayAlerts = True '確認メッセージ非表示
Application.ScreenUpdating = True '画面更新の再開
End Sub
ね、シンプルになったでしょ♪
|
|