将剪贴板中的值粘贴到打开的Excel电子表格的第一个空行中

时间:2016-12-06 17:47:38

标签: excel vba clipboard paste

我有一个来自R的数据框,我需要将其粘贴到打开的Excel电子表格的第一个空行中。

我尝试了很多东西。

此代码抛出“运行时错误'1004':应用程序定义的错误或对象定义的错误”。

function callSomeMethod(param){
  console.log('called...'+param);
};

Function.prototype.onlyOnce = function(param){
  if(!this.wasCalled && this == callSomeMethod){
    this(param);
    this.wasCalled = true;
  }
};


function outerMethod(){
  callSomeMethod.onlyOnce('foo');
  callSomeMethod.onlyOnce('bar');
}

outerMethod();

我也尝试使用xlUp从下往上查找第一个空行。

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

PasteSpecial行中,您将Range指定为Range("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行。

答案 2 :(得分:0)

如果我理解,您可以尝试在Windows剪贴板中粘贴一个值。问题是,从Windows粘贴时无法使用粘贴值,因为它不会复制Excel对象。

不要使用Range.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,而是尝试自己使用PasteSpecial:

Range.PasteSpecial

您也可以使用.Paste方法,但您需要先选择范围:

Range("A1").select
ActiveSheet.Paste

使用什么方法查找Range,以及如何粘贴它并不重要。我更喜欢前一种方法,但两者都应该有用。

答案 3 :(得分:0)

<强>附加到最后的文件

Set Range2 = ActiveDocument.Content 
 Range2.Collapse Direction:=wdCollapseEnd 
 Range2.Paste 

Reference Link Microsoft-Docs