|
▼Jaka さん、皆さん、こんにちは。
Excel2000(Sp-3)で
現象を確認しました。
再現手順は、
新規ブックの最左端ワークシートに「コントロールツールボックス」のコマンドボタンを
ひとつ貼り付けて下さい。
当該シートのシートモジュールに
上記ボタンのクリックイベントプロシジャーを
'============================================
Private Sub CommandButton1_Click()
MsgBox "ok"
End Sub
等と記述して下さい。
これでシートの準備はOK・・・。
問題のコードを標準モジュールに
'===========================================================
Sub copytest()
Set bk = Workbooks.Add
ThisWorkbook.Worksheets(1).Copy before:=bk.Worksheets(1)
Call 削除処理(bk)
bk.SaveAs "D:\My Documents\TESTエリア\vbprotest4.xls"
' 適当な名前で保存する
End Sub
'=====================================================================
Sub 削除処理(bk)
With bk.VBProject
bk.Worksheets(1).OLEObjects(bk.Worksheets(1).OLEObjects.Count).Delete
For Each VBC In .VBComponents
Select Case VBC.Type
Case 1, 2, 3
.VBComponents.Remove VBC
Case 100
With VBC.CodeModule
.Deletelines 1, .Countoflines
End With
End Select
Next
End With
End Sub
このcopytestを実行後、保存したブック「vbprotest4.xls」を一旦とした後、
再度、開くと「マクロを有効うんぬん」のメッセージが出ます。
原因は、謎ですが、調べた限りでは、
bk.Worksheets(1).OLEObjects(bk.Worksheets(1).OLEObjects.Count).Delete
↑のコードをコメントに変えて実行すると、vbprotest4.xlsを開いたときに
メッセージは出ません。
「コントロールツールボックス」のコントロールの削除に原因がありそうですよ!!
これは、私が以前質問させていただいた
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=7011;id=excel
に関係しているのかもしれませんね!!
「コントロールツールボックス」のコントロールは、動的な作成・削除には
向いていないのかもしれません。
「フォーム」のコントロールへの変更を考えた方がよいかもしれませんよ。
|
|