開いたときにすべてのシートにボタンがあることを確認するワークシートがあります。そのため、ボタンのない新しいシートが存在する場合は、それを追加するように設定されています。数か月前はこれでうまくいったと確信していましたが、現在 (このシートを数か月使用していなかった後)、「OLEObjects クラスの Add プロパティを取得できません」というエラー '1004' が表示されます。エラーは「set btn」行で発生します。何が原因で、どうすれば修正できますか?
Private btn As OLEObject
Public Const sButtonName1 As String = "btnTorqueCurveFit"
Public Const sBtnMessage1 As String = "Calculate Constant Torque Constants"
Public Const sButtonName2 As String = "btnESPCurveFit"
Public Const sBtnMessage2 As String = "Calculate Constant ESP Constants"
Public Const sButtonLeft1 As Long = 302.25
Public Const sButtonLeft2 As Long = 364.25
Private Sub AddTorqueButton(n As Worksheet)
'Add a Button to the Sheet
Set btn = n.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=" & sButtonLeft1 &", Top:=3.75, Width:=60, Height:=57.75)
btn.Name = sButtonName1
btn.Object.Caption = sBtnMessage1
btn.Object.Font.Bold = True
btn.Object.WordWrap = True
'Modify the sheet's code to have newly added button call the general code in the module
Dim codeblock As CodeModule
Dim vbComp As VBComponent
Dim lineC As Integer
Dim Ap As String, _
Lf As String, _
Tabs As String, _
inputStr As String
Set vbComp = ActiveWorkbook.VBProject.VBComponents(n.CodeName)
Set codeblock = vbComp.CodeModule
Tabs = Chr(9)
Lf = Chr(10)
Ap = Chr(34)
inputStr = "Private Sub " & sButtonName1 & "_Click()" & Lf & Tabs & _
"ConstTorqueButtonAction ActiveSheet" & Lf & _
"End Sub"
With codeblock
lineC = .CountOfLines + 1
.InsertLines lineC, inputStr
End With
End Sub
マクロ設定 = 「すべて有効」、Active X 設定 = 「すべて有効」、ドキュメントはネットワーク化されていますが、ネットワーク ドキュメントは信頼できるように設定されています。同じ「set btn」スタイルのコードを使用する別のワークブックがあり、このマシンで動作するため、特にこのワークブックに問題があるようですが、上記のコードでエラーが発生します。どんな助けや洞察も大歓迎です。