从Powershell粘贴到Excel中

时间:2017-05-25 09:13:09

标签: excel powershell paste

我尝试了很多选项,将从其他Excel工作簿复制的信息粘贴到我的新工作簿中,但没有成功(范围很大 - 超过3000行)。 请参阅我的脚本示例,我将非常感谢您的建议:

$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false
$objExcel.displayAlerts = $false
$Src = [Environment]::GetFolderPath('Desktop')+'\New.xlsx'
$Files = [Environment]::GetFolderPath('Desktop')+'\Org.xlsx'
$wb1 = $objExcel.workbooks.open($Files)
$Worksheetwb1 = $wb1.WorkSheets.item('Org')
$Worksheetwb1.activate()
$Range = $Worksheetwb1.Range('A1:I1').EntireColumn
$Range.Copy() | Out-Null
$wb3 = $objExcel.workbooks.open($Src)
$Worksheetwb3 = $wb3.WorkSheets.item('Dest')
$Worksheetwb3.activate()
$Worksheetwb3.Columns.item('A:I').clear()
$Range3 = $Worksheetwb3.Range('A1:I1').EntireColumn
$Worksheetwb3.Paste($Range.Value2)
$wb3.close($true)
$wb1.close($true)
$objExcel.Quit()

先谢谢了, 塔尔

3 个答案:

答案 0 :(得分:0)

你正在进入一个错误的范围。 Worksheet.Paste()包含目标和链接参数,您的代码仅使用目标,应该是属于该工作表的Range。因此,正确的界限应为:

$Worksheetwb3.Paste($Range3)

答案 1 :(得分:0)

替代Vesper的解决方案:

$Worksheetwb3.Range("A1").Paste() | Out-Null

# Paste special (as values)
$Worksheetwb3.Range("A1").PasteSpecial(-4163) | Out-Null

答案 2 :(得分:0)

非常感谢你的答案,但这些对我来说并不适用,但是我通过更改复制命令的顺序找到了答案,然后在粘贴为我解决之后立即找到答案。 非常感谢你。 塔尔