Копирование диапазона с одного листа книги на другой лист книги с помощью PowerShell - PullRequest
0 голосов
/ 08 июля 2019

Я попытался создать скрипт для копирования с одного листа книги на другой и вставки в том же диапазоне. Я пробовал пять разных решений, но пока не получилось.

$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 не работает) и сохранить файл после вставки.

1 Ответ

0 голосов
/ 08 июля 2019

Попробуйте это:

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...