2016-10-06 53 views
-4
Sub GetTW_Data() 

ThisWorkbook.Activate 'start in THIS workbook 
Sheets(1).Select 'switch to data import sheet 

'Opens source file (this filename never changes) 
Workbooks.Open Filename:="C:\Test 1\1 eBay BrandProgress.xls", ReadOnly:=True 

Workbooks("1 eBay BrandProgress.xls").Activate 'switch to source workbook 
Sheets(1).Select.UsedRange.Copy 'switch to source data sheet 

ThisWorkbook.Activate 'Return to THIS workbook 

[B5].PasteSpecial Paste:=xlPasteValues 'paste data to import start cell 
[a1].Select 'cancels highlighted paste region 

Workbooks("1 eBay BrandProgress.xls").Close 'source data workbook 

End Sub 
+0

目前尚不清楚你在問什麼。請澄清更多細節,特別是「不復制」的意思 –

回答

1

你需要避免使用選擇和激活。

將工作簿,工作表和範圍設置爲變量並使用它們。

此外,粘貼正確值時避免速度剪貼板。

Sub GetTW_Data() 
Dim tWb As Workbook 
Dim ebayWb As Workbook 
Dim tWs As Worksheet 
Dim ebayWs As Worksheet 
Dim rng As Range 

Set tWb = ThisWorkbook 
Set tWs = tWb.Sheets(1) 

Set ebayWb = Workbooks.Open(Filename:="C:\Test 1\1 eBay BrandProgress.xls", ReadOnly:=True) 
Set ebayWs = ebayWb.Sheets(1) 

Set rng = ebayWs.UsedRange 

tWs.Range("B5").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value 

ebayWb.Close 

End Sub 
+0

它是通過價值觀來粘貼的。我如何才能做到粘貼,就像從源文件格式化一樣? –

+0

您的代碼只粘貼值而不是格式。所以我直接分配了這些值。如果你想要的格式,那麼你需要'rng.Copy tWs.Range(「B5」)'而不是另一行。 –

+0

這就像一個魅力。非常感謝!! –

0

這樣看來,你試圖將整個

UserRange
表的內容粘貼到
Sheet(1)
,但你粘貼到單元格B5。由於缺少目標中的第一行和前四列,因此您將更多的行和列粘貼到目標中。

要麼改變複製範圍,以說明不符,或者粘貼到單元格A1目的地