2016-01-18 91 views
0

我試圖將數據從列「A」中的單元格通過列「K」在一個封閉的工作表中複製到打開的工作表,從單元格「 A4「,同時保持源格式。工作簿A是我試圖從中複製的工作簿,Workbook是我試圖粘貼的工作簿。將可變範圍從一個工作簿粘貼到另一個工作簿,從特定單元格開始

Sub cmdUpdate_Click() 
Dim LastRow As Long 
LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Workbooks.Open Filename:="path to Workbook A", ReadOnly:=True 
Windows("Workbook A").Activate 
Range("A3" & ":K" & LastRow).Select 
Selection.Copy 
Workbooks("Workbook B").Cells(Rows.Count, 4).PasteSpecial Paste:=PasteAllUsingSourceTheme 

我收到的錯誤是「選擇範圍類失敗的方法」。

回答

1

你可以試試這個。因爲它明確地聲明,而不是使用select語句(應避免儘可能)

Sub cmdUpdate_Click() 
Dim LastRow As Long 
LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Workbooks.Open Filename:="path to Workbook A", ReadOnly:=True 
Workbooks("Workbook A").Range("A3" & ":K" & LastRow).Copy 
Workbooks("Workbook B").Cells(Rows.Count, 4).PasteSpecial Paste:=xlPasteAllUsingSourceTheme 

更新後進一步評論的這種不使用select語句,但仍然複製的範圍完全一樣:

你可以試試這個:

Dim wb1 As Workbook, wb2 As Workbook 
Dim ws1 As Worksheet, ws2 As Worksheet 
Dim LastRow As Long 
Dim rng As Range 

Set wb1 = Workbooks.Open("path to Workbook A", ReadOnly:=True) 
Set wb2 = Workbooks("Workbook B") 

Set ws1 = wb1.Sheets("Relevant Worksheet in A") 
Set ws2 = wb2.Sheets("Relevant Worksheet in B") 

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Set rng = ws1.Range("A3" & ":K" & LastRow) 

rng.Copy 

With ws2 
    .Cells(Cells(.Rows.Count, "D").End(xlUp).Row, 4).PasteSpecial Paste:=xlPasteAllUsingSourceTheme 
End With 
+0

那花了「的選擇方法的護理範圍班失敗「的錯誤,但另一個問題已浮出水面;被複制的單元格在工作簿B中而不是在工作簿A中,即使我使用了Windows(「工作簿A」)。激活 – rstuart931

+0

@ rstuart931我已經更新並將'.Activate'行與'.Copy'組合在一起。將該範圍明確地聲明給工作簿。您可能希望使用'LastRow'語句做類似的事情,因爲您當前正在計算我假設爲'Workbook B'的行數,然後使用該值來聲明'Workbook A' – Tom

+0

中的範圍LastRow,我移動它,並做了一個手錶,看看它現在正在閱讀正確的工作簿。正如你所建議的那樣,我明確地聲明瞭範圍。並收到以下錯誤「對象不支持此屬性或方法」。我很欣賞你這樣做的時間。 – rstuart931

相關問題