2016-12-06 490 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并不重要,只需将其粘贴即可。我更喜欢前一种方法,但都应该工作。