Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 144
Благодарности: 16

Профиль | Отправить PM | Цитировать


Отдельное спасибо за ImportExcel. В данной задаче не поможет, но есть масса других сфер применения.
Задачу решил. Мало ли кому пригодится, поэтому выкладываю решение.
Код: Выделить весь код
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. Записываю только в первую ячейку, чтобы потом вручную заполнить весь столбец.
Понимаю, что решение - "костыль", но это гораздо лучше, чем вручную копипастить такое количество строк и столбцов.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:59, 25-03-2024 | #5