2016-12-06 228 views
0

我有一個R數據框,需要粘貼到打開的Excel電子表格的第一個空行。我嘗試了很多東西,但沒有運氣。以下是最新的嘗試。這第一個代碼集會引發「運行時錯誤」1004':應用程序定義或對象定義的錯誤「。使用VBA將剪貼板中的值粘貼到Excel中

Dim NextRow As Range 
Set NextRow = Range("B" & Sheets("TC-9").UsedRange.Rows.Count + 1) 
Worksheets("TC-9").Range("A" & NextRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

我也嘗試使用xlUp從底部查找找到第一個沒有運氣的空行。代碼如下。

Cells(Range("C1000000000").End(xlUp).Row + 1, 3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

有什麼建議嗎?我是VBA新手。

+1

可能重複http://stackoverflow.com/questions/5552299/how-to-copy-to-clipboard-using-access-vba –

+0

什麼是您所關注的工作流程:你複製R代碼,然後你選擇你打開的工作表,對吧?......你有一個按鈕,你的excel文件中有例程或類似的東西? – Hackerman

+0

http://stackoverflow.com/questions/9022245/get-text-from-clipboard-using-gettext-avoid-error-on-empty-clipboard你可以使用R Addin嗎? –

回答

1

試試這個

dim lastrow as integer 

With Worksheets("TC-9") 
    lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row 
    .Range("A" & lastrow + 1).PasteSpecial xlPasteValues, _ 
     Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

End With 
0

在您的PasteSpecial行中,您指定RangeRange("A" & NextRow)NextRow已被定義爲Range本身,並將StringRange連接無效。

如下更改代碼:

Dim NextRow As Long 
NextRow = Sheets("TC-9").Range("B" & Sheets("TC-9").Rows.Count).End(xlUp).Row + 1 
Worksheets("TC-9").Range("A" & NextRow).PasteSpecial 

注意:這會從剪貼板複製單個值。如果您想將多個值複製到單個行,則它們將在製表符分隔時起作用,但如果用逗號分隔,則不起作用。 (大概可以做到,但需要多一點的工作。)


在你的第二個代碼片段你用Range("C1000000000")但Excel中目前有1,048,576行的限制。

0

如果我理解,你正試圖在Windows剪貼板中粘貼一個值。問題在於,從Windows粘貼時不能使用粘貼值,因爲它不復制Excel對象。

而不是使用Range.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,儘量只使用PasteSpecial的自身:

Range.PasteSpecial 

你也只使用.Paste方法,但是你需要先選擇範圍:

Range("A1").select 
ActiveSheet.Paste 

使用什麼方法查找Range並不重要,只需將其粘貼即可。我更喜歡前一種方法,但都應該工作。