使用VBA将剪贴板中的值粘贴到Excel中
问题描述:
我有一个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新手。
答
试试这个
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
答
在您的PasteSpecial
行中,您指定Range
为Range("A" & NextRow)
。 NextRow
已被定义为Range
本身,并将String
与Range
连接无效。
如下更改代码:
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行的限制。
答
如果我理解,你正试图在Windows剪贴板中粘贴一个值。问题在于,从Windows粘贴时不能使用粘贴值,因为它不复制Excel对象。
而不是使用Range.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
,尽量只使用PasteSpecial的自身:
Range.PasteSpecial
你也只使用.Paste方法,但是你需要先选择范围:
Range("A1").select
ActiveSheet.Paste
使用什么方法查找Range
并不重要,只需将其粘贴即可。我更喜欢前一种方法,但都应该工作。
可能重复http://stackoverflow.com/questions/5552299/how-to-copy-to-clipboard-using-access-vba –
什么是您所关注的工作流程:你复制R代码,然后你选择你打开的工作表,对吧?......你有一个按钮,你的excel文件中有例程或类似的东西? – Hackerman
http://stackoverflow.com/questions/9022245/get-text-from-clipboard-using-gettext-avoid-error-on-empty-clipboard你可以使用R Addin吗? –