|
▼ちゃっぴ さん:
ソースをきれいにしようと、下のソースを参考にしているのですが、
wbkBook(1) = ThisWorkbook でオブジェクト変数または、with
ブロック変数が設定されていません で落ちてしまいます。
何か原因があるのでしょうか
よかったら教えて下さい
▼ちゃっぴ さん:
>オブジェクト変数を駆使して修正すると以下のようになります。
>
>ご参考までに・・・
>
>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
>
>ね、シンプルになったでしょ♪
|
|