Отдельное спасибо за ImportExcel. В данной задаче не поможет, но есть масса других сфер применения.
Задачу решил. Мало ли кому пригодится, поэтому выкладываю решение.
Код:
![Выделить весь код](images/misc/selectcode.png)
Param(
$path1 = "Путь_к_файлу_из_которого_копируем.xls",
$path2 = "Путь_к_шаблонному_файлу.xlsx",
$path3 = "Путь_к_результирующему_файлу.xlsx",
$worksheet1 = "Товарная база",
$worksheet2 = "Товарная база",
$range1 = "A7:CY1006",
$range2 = "A7",
$range3 = "CZ7:CZ1006",
$range4 = "DA7",
$range5 = "CZ7",
$country = "Беларусь [112]"
)
Copy-Item $path2 $path3
$excel = New-Object -ComObject Excel.Application
$workbookSource = $excel.Workbooks.Open($path1)
$rangeToCopy = $workbookSource.Worksheets[$worksheet1].Range($range1)
$workbookTarget = $excel.Workbooks.Open($path3)
$targetSheet = $workbookTarget.Worksheets[$worksheet2]
$rangeToCopy.Copy($targetSheet.Range($range2))
$rangeToCopy = $workbookSource.Worksheets[$worksheet1].Range($range3)
$rangeToCopy.Copy($targetSheet.Range($range4))
$rangeToFill = $targetSheet.Range($range5)
$rangeToFill.Value = $country
$workbookTarget.Save()
$workbookSource.Close()
$workbookTarget.Close()
$excel.Quit()
Единственное, что не осилил, $range5 указывает на начало столбца, куда нужно записать значение $country. Записываю только в первую ячейку, чтобы потом вручную заполнить весь столбец.
Понимаю, что решение - "костыль", но это гораздо лучше, чем вручную копипастить такое количество строк и столбцов.