これは一時的な回答です。OPがコードを見ると削除されます
エラーなしでボタンを約100回コピーしました。trgtWbk
が適切に閉じられ、参照が解放されていることを確認してください。コード全体とワークブック オブジェクトの操作方法を確認できないため、エラーが発生する理由を判断するのは非常に困難です。
以下のスキーマに最適になるようにコードを再配置してみてください
Sub Main()
Dim wb1 As Workbook, wb2 As Workbook
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Open("C:\Users\...\Desktop\Book2.xlsm")
CopyActiveX "cmd1", wb1, wb2
CopyActiveX "cmd2", wb1, wb2
wb2.Save
wb2.Saved = True
wb2.Close
Set wb2 = Nothing
End Sub
Sub CopyActiveX(cName As String, ByRef srcWbk As Workbook, ByRef trgtWbk As Workbook)
Dim x As OLEObject
Dim y As OLEObject
Dim xName As String
Set x = srcWbk.Sheets("C").OLEObjects(cName)
Set y = x.Duplicate
xName = x.Name
y.Cut
trgtWbk.Sheets("C").Activate
trgtWbk.Sheets("C").Range("O1").Select
With trgtWbk.Sheets("C")
.Paste
.OLEObjects(.OLEObjects.Count).Name = xName
.Activate
End With
End Sub