0

以下のコードでは、「貼り付けメソッドを使用できません」というエラーが発生することがあります。まったく同じファイルでマクロを実行しても、実行される場合と実行されない場合があります。

理由を理解するか、より安定した方法を提案できますか?

Set x = srcWbk.Sheets("C").OLEObjects("MCFB")
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
4

1 に答える 1

1

これは一時的な回答です。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
于 2013-08-30T10:23:46.447 に答える