复制行,直到最后一行的值为ONLY到另一个工作簿

我能够通过使用预定义的范围将行复制到另一个工作簿。 但是,我想确保它只需要复制那些值。 我一直在制定这个代码,但它返回一个错误-1004

Private Sub test() Dim WBa As Workbook, MyPathA As String Dim FinalRow As Long Dim getDBsht As Worksheet MyPathA = "sharepoint.com/Financial Tracker v8.xlsx" ThisWorkbook.Sheets("ConTracker_DB").UsedRange.ClearContents ' Attempt to open a sharepoint file Set WBa = Workbooks.Open(MyPathA) 'Set WBb = Workbooks.Open(MyPathB) Set getDBsht = WBa.Sheets("ConTracker_DB") getDBsht.UsedRange.Copy 'error starts here ThisWorkbook.Sheets("ConTracker_DB").UsedRange.Paste Application.CutCopyMode = False WBa.Close Set WBa = Nothing End Sub 

更新代码: UsedRange固定我的复制行只有值,但粘贴错误仍然存​​在

你可以迭代单个单元格,只复制那些有值的单元格:

 Dim sourceCell as Range Dim targetCell as Range Set targetCell = ThisWorkbook.Sheets("ConTracker_DB").Range("A1"). For each sourceCell in Range("theNamedRangeYouWantToCopyFrom") 'I'm not sure if you need a dynamic range to copy from, but if you don't... '...it's much easier to use a "named range" for that. If sourceCell.Value <> "" Then targetCell.Value = sourceCell.Value Set targetCell = targetCell.Offset(1,0) End If Next sourceCell 

尝试定义您需要复制的最后一列,然后在范围中定义开始和结束单元格:

 FinalCol = 23 '(or whatever you need) getDBsht.Range(getDBsht.Cells(1, 1), getDBsht.Cells(FinalRow, FinalCol)).Copy 

另外请注意,上面我指定了范围中的单元格来自哪个工作表。 如果您一次打开多个工作簿/工作表,这可以提供帮助。

在开始复制之前定义目的地也是一个好主意。

 CopyTo = ThisWorkbook.Sheets("ConTracker_DB").Range("A1") 

回答我的问题:))

基本上如果你使用usedRange.Copy

你应该粘贴Cells(1, 1).PasteSpecial Paste:=xlPasteValues

如果你使用这个,请在​​下面find完整的代码:

 Private Sub test() Dim WBa As Workbook, MyPathA As String Dim FinalRow As Long Dim getDBsht As Worksheet MyPathA = "sharepoint.com/Financial Tracker v8.xlsx" ThisWorkbook.Sheets("ConTracker_DB").UsedRange.ClearContents ' Attempt to open a sharepoint file Set WBa = Workbooks.Open(MyPathA) 'Set WBb = Workbooks.Open(MyPathB) Set getDBsht = WBa.Sheets("ConTracker_DB") getDBsht.UsedRange.Copy ThisWorkbook.Sheets("ConTracker_DB").Cells(1, 1).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False WBa.Close Set WBa = Nothing End Sub