簡體   English   中英

使用PowerShell將范圍從一個工作簿表復制到另一工作簿表

[英]Copying range from one workbook sheet to another workbook sheet with PowerShell

我試圖制作一個腳本,從一個工作簿表復制到另一個工作表,然后粘貼在完全相同的范圍內。 我嘗試了五種不同的解決方案,但失敗了。

$excel=new-object -comobject excel.application;
$excel.visible=$true;
$SourceWorkBook=$Excel.Workbooks.open("C:\Oldsheet.xlsx");
$TargetWorkBook=$excel.workBooks.open("C:\Newsheet.xlsx");
$SourceWorkBook.WorkSheets.item("Numbers").activate();
$SourceRange=$SourceWorkBook.WorkSheets.item("Numbers").range("B2:G400");
$SourceRange.copy() | out-null;
$TargetWorkBook.worksheets.item("Numbers").paste("B2:G400");

上面的代碼打開了工作簿,並選擇了要復制的范圍,但自身並未粘貼。 另外,我想禁止顯示錯誤消息($ Excel.DisplayAlerts = $ False不起作用),並在粘貼后保存文件。

嘗試這個:

    Add-Type -AssemblyName Microsoft.Office.Interop.Excel

    $excel               = New-Object -ComObject Excel.Application
    $excel.Visible       = $true
    $excel.DisplayAlerts = $false

    $SourceWorkBook=$Excel.Workbooks.Open("C:\Oldsheet.xlsx")
    $TargetWorkbook=$excel.workBooks.Open("C:\Newsheet.xlsx")

    $SourceWorkBook.WorkSheets.Item("Numbers").Activate()
    $SourceRange=$SourceWorkBook.WorkSheets.Item("Numbers").Range("B2:G400")

    [void]$SourceRange.Copy() 
    [void]$TargetWorkBook.worksheets.item("Numbers").Range("B2:G400").PasteSpecial( [Microsoft.Office.Interop.Excel.XlPasteType]::xlPasteAll )

    [void]$SourceWorkBook.Close()
    [void]$TargetWorkBook.Save()
    [void]$TargetWorkBook.Close()

    $excel.DisplayAlerts = $true

    [void]$excel.Quit()

    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM