![](/img/trans.png)
[英]I am trying to copy rows from one workbook and paste to another based on text in a specific column
[英]I am trying to loop through code that copies an autofiltered range from one workbook and paste it into another. I
我有一個循環,它在工作簿 A 中獲取動態范圍並將其粘貼到工作簿 B 的單元格 D4 中。 然后它再次循環並在工作簿 C 單元格 D4 中粘貼另一個動態范圍。 但是這兩個范圍的大小可能不同。
我得到一個“范圍 class 的粘貼特殊方法失敗”
我已經嘗試了這里看到的所有三種復制/粘貼方法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 錯誤。 從來不是同一個地方。
建議您明確捕獲您感興趣的信息,而不是使用過濾器和復制/粘貼。 然后將該信息直接加載到目標中。
無需創建一個您從不使用然后從不丟棄的 xlApp(設置 xlApp=Nothing)。
從過濾范圍中減去 '5' 行(即這一行: rng.Offset(1, 5).Resize(rng.Rows.Count - 5).Copy
,看起來像一個潛在的錯誤。如果意圖只是刪除字段 header 從范圍中,將 5 更改為 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.