【问题标题】:Paste into Excel from Powershell从 Powershell 粘贴到 Excel
【发布时间】:2022-03-17 18:06:55
【问题描述】:

我尝试了很多选项来将从其他 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()

【问题讨论】:

  • 您能否更具体地说明什么不起作用?你知道它有多成功吗?如果您在A1 中有一个值而不是多列范围,那么脚本是否成功?我经常使用 PowerShell 和 Excel,但如果没有更详细的信息,我无法提供帮助。
  • 粘贴对我不起作用 "$Worksheetwb3.Paste($Range.Value2)"

标签: excel powershell paste


【解决方案1】:

您粘贴到了错误的范围内。 Worksheet.Paste() 具有目标和链接参数,您的代码仅使用目标,它应该是属于该工作表的 Range。因此,正确的行应该是这样的:

$Worksheetwb3.Paste($Range3)

【讨论】:

    【解决方案2】:

    替代 Vesper 的解决方案:

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

    【讨论】:

      【解决方案3】:

      我通过更改复制命令的顺序找到了答案,然后粘贴立即为我解决了它。

      【讨论】: