簡體   English   中英

我正在嘗試遍歷從一個工作簿復制自動過濾范圍並將其粘貼到另一個工作簿的代碼。 我

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM