1. ホーム
  2. excel

[解決済み】「ワークシートクラスの貼り付けメソッドに失敗しました」が時々発生するのはなぜですか?

2022-02-11 01:45:26

質問

いくつかの背景:次のマクロは、指定されたディレクトリにある最も新しいファイルを開きます。 新しく開いたシートのデータをすべて別のワークシートにコピーしようとしています。 時々、そして唯一 時々 1004エラーが発生します。

<ブロッククオート

Worksheet クラスの Paste メソッドに失敗しました"。

マクロが動作することがあります。なぜこのようなことが起こるのか、原因を特定できません。

どなたかコードの問題点を特定できる方はいらっしゃいますか? クリップボードのクリアがうまくいくこともありますが、そうでないこともあります。 また、私はこのようなマクロをいくつか(異なるフォルダにリンクされている)より大きなマクロで使用しています。 時々、同じ問題に遭遇します。

Sub ImportOldRates()

    'Declare the variables
    Dim MyPath As String
    Dim MyFile As String
    Dim LatestFile As String
    Dim LatestDate As Date
    Dim LMD As Date

    'Specify the path to the folder
    MyPath = "C:\Folder1\Folder2\"

    'Make sure that the path ends in a backslash
    If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"

    'Get the first Excel file from the folder
    MyFile = Dir(MyPath & "*.xls", vbNormal)

    'If no files were found, exit the sub
    If Len(MyFile) = 0 Then
        MsgBox "No files were found...", vbExclamation
        Exit Sub
    End If

    'Loop through each Excel file in the folder
    Do While Len(MyFile) > 0

        'Assign the date/time of the current file to a variable
        LMD = FileDateTime(MyPath & MyFile)

        'If the date/time of the current file is greater than the latest
        'recorded date, assign its filename and date/time to variables
        If LMD > LatestDate Then
            LatestFile = MyFile
            LatestDate = LMD
        End If

        'Get the next Excel file from the folder
        MyFile = Dir

    Loop

    'Open the latest file
    Workbooks.Open MyPath & LatestFile
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.Run "ConnectChartEvents"
    Cells.Select
    Range("E2").Activate
    Selection.copy
    ActiveWindow.Close
    ActiveSheet.PasteSpecial Format:="Unicode Text", Link:=False, _
    DisplayAsIcon:=False, NoHTMLFormatting:=True
    Application.CutCopyMode = False
    Selection.Columns.AutoFit
    Range("A1").Select
    Application.DisplayAlerts = True
    Application.EnableEvents = True

End Sub

解決方法は?

皆さんからの投稿ありがとうございました。

が原因であったことが判明しました。

 Range("E2").Activate

シート全体をコピーすると、システムのメモリが圧迫され、コピー機能に不具合が生じることがありました。 そのような方のために、私は単純に小さい範囲を選択しました。

 Range("A1,Z400").Activate

これは問題を解決しました