2016-04-25 80 views
1

我能夠通過使用預定義的範圍將行復制到另一個工作簿。不過,我想確保它只需要複製那些值。我一直在制定這個代碼,但它返回一個錯誤-1004複製行直到最後一行的值爲ONLY到另一個工作簿

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固定我的副本行只值,但粘貼錯誤仍然存​​在

+1

'getDBsht.Ran ge(FinalRow).Copy'只複製一行。爲什麼不只是'getDBsht.UsedRange.Copy'? – Johanness

+0

@Johanness工作!謝謝:)但是錯誤仍然以ThisWorkbook.Sheets塊開始 – astropringles

+0

有一段時間以前,清除內容也清除了粘貼文件夾。所以如果錯誤指向粘貼:請先嚐試清除表單,然後複製粘貼。否則:您確定,工作表存在於ThisWorkbook中(嘗試第二個工作簿變量(如myActiveWB)將其設置在開頭,並明確將其用於該命令)。 – Johanness

回答

0

如果你使用usedRange.Copy

你應該 Cells(1, 1).PasteSpecial Paste:=xlPasteValues

被粘貼請在下面找到完整的代碼,如果你回答我的問題:))

基本上使用這個:

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 
+0

很高興你找到答案。你應該接受它 - 它從「未回答」中解決問題。沒有你, – Johanness

+0

不可能做到! :D乾杯! @Johanness – astropringles

0

你可以遍歷各個單元並且只複製那些具有價值:

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 
0

嘗試確定你需要複製的最後一列,然後定義開始和結束單元格區域:

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

另請注意,上面我指定範圍中的單元格來自哪個工作表。如果您一次打開多個工作簿/工作表,這可以提供幫助。

在開始複製之前定義目的地也是一個好主意。

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

嗨@ebbishop你看到我正在複製的一個有多個列..我想我有一個問題的範圍。我是否應該定義粘貼範圍? – astropringles

相關問題