在PowerShell中复制和粘贴工作簿之间的Excel范围

我试图复制和粘贴两个工作簿之间的Excel范围,但复制function不工作,因为我打算。 观察下面的代码片段。

$worksheetCSV.activate() $range1=$worksheetCSV.Range("a","h") $worksheetCSV.copy($range1) $worksheetXLS.activate() $lastRow = $worksheetXLS.UsedRange.rows.count + 1 $range2=$worksheetXLS.Range("A" + $lastrow) $worksheetXLS.Paste($range2) 

这个代码几乎可以工作,但是唯一被粘贴的单元格是:

 $worksheetXLS.Paste($range2) 

有什么方法可以复制要粘贴的范围的实际内容。

若要将范围从一个工作表复制到另一个工作表(整个列A到H),对代码的这种修改将会起作用:

 $worksheetCSV.activate() $range1 = $worksheetCSV.Range("A:H") $range1.copy() $worksheetXLS.activate() $range2 = $worksheetXLS.Range("A:H") $worksheetXLS.Paste($range2) 

但是,由于您要添加到其他工作表中的现有数据,因此您必须以不同的方式设置目标范围,以免覆盖已有的数据。 我还假定现有的范围有标题,你不想在其他工作表中复制,所以我开始在2行。

根据您当前的代码,这应该工作:

 $worksheetCSV.activate() $lastRow1 = $worksheetCSV.UsedRange.rows.count $range1 = $worksheetCSV.Range("A2:H$lastRow1") $range1.copy() $worksheetXLS.activate() $lastRow2 = $worksheetXLS.UsedRange.rows.count + 1 $range2 = $worksheetXLS.Range("A$($lastRow2):H$($range1.Rows.Count)") $worksheetXLS.Paste($range2) 

要复制和粘贴,源范围和目标范围的大小应该相同。 所以这个代码设置源工作表中的数据的实际范围(减去第一行中的标题)并复制它。 然后它将目标范围从比使用范围高的一行开始设置,并向下延伸源范围内的总行数(所以两个范围大小应该匹配)。 最后,将数据粘贴到范围内。