У меня есть цикл, который берет динамический диапазон в рабочей книге A и вставляет его в рабочую книгу B, ячейка D4. Затем он повторяется и вставляет другой динамический диапазон в рабочую книгу C, ячейку D4. Но эти два диапазона могут быть разных размеров.
Я получаю "Метод PasteSpecial класса Range не удалось"
Я попробовал все три метода копирования / вставки, которые здесь показаны https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/ Первые два примеране копирует, а последний копирует, но выдает мне вышеуказанную ошибку PasteSpecial.
Sub CopyPaste()
Dim AX As Workbook
Dim WB As Workbook
Dim rng As Range
Dim autofiltrng As Range
Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")
Set AX = Workbooks.Open("C:\Desktop\AXFile.xlsx")
Set WB = Workbooks.Open("C:\Desktop\ClientA.xlsx")
'filtering AX file to show 1 specific client
With Axys
AX.Sheets(1).Range("A2").AutoFilter Field:=4, Criteria1:="ClientA"
End With
With ActiveSheet.AutoFilter.Range
On Error Resume Next
Set autofiltrng = .Offset(1, 0).Resize(.Rows.Count - 1,_
1).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
Set rng = AX.Sheets(1).AutoFilter.Range
'copy/paste data for specific client in their own XLS
rng.Offset(1, 5).Resize(rng.Rows.Count - 5).Copy
WB.Sheets(1).Range("a14").PasteSpecial xlPasteValues
Application.CutCopyMode = False
WB.Save
WB.Close
AX.Close
End Sub
Я вынул цикл из вышеприведенного кода, но каждый раз, когда я перебираю 50+ клиентов, чтобы создать 50+EXCEL файлы Я получаю ошибку PasteSpecial в какой-то случайной точке процесса. Никогда в одном месте.