Использование Powershell для добавления таблицы в конец файла Excel (последняя строка) - PullRequest
1 голос
/ 10 декабря 2011

Я написал скрипт Powershell, который копирует таблицу из Microsoft Word и вставляет их в документ Excel.Я хочу добавить его после последней использованной строки в столбце A.

Я получил этот код до сих пор:

$Excel = New-Object -ComObject Excel.Application

$Excel.Visible = $True

$ExcelWordBook = $Excel.Workbooks.Open($ExcelPath)

$ExcelWorkSheet = $Excel.WorkSheets.item("Sheet1")

$ExcelWorkSheet.activate()

Здесь я запутался, я хочу найтипоследняя строка, которая используется в рабочем листе Excel.

$lastRow = $ExcelWorkSheet.UsedRange.rows("A").count

$nextRow = $lastRow + 1

$ExcelWorkSheet.Range("A$nextRow").Select

$ExcelWorkSheet.Paste()  

Мне кажется, что я так близок после этого.Я пытался использовать свойство UsedRange в Office Interlop, чтобы определить последнюю строку в рабочей таблице Excel.(http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.usedrange(v=vs.80).aspx) Есть идеи?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Спасибо, в итоге я выбрал другой, более динамичный маршрут, вместо того, чтобы использовать «A9924082480198» в качестве конца диапазона.

1 голос
/ 11 декабря 2011

Объект, возвращаемый $ExcelWorkSheet.UsedRange, имеет свойство rows (не метод, вы не можете использовать параметр). Это означает, что $ExcelWorkSheet.UsedRange.rows.count будет работать, но не даст желаемого результата (он даст вам номер строки для последнего столбца).

Чтобы добавить что-то после последней использованной ячейки в столбце A, попробуйте следующее:

$xldown = -4121 # see: http://msdn.microsoft.com/en-us/library/bb241212(v=office.12).aspx
$xlup = -4162
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$ExcelWordBook = $Excel.Workbooks.Open($ExcelPath)
$ExcelWorkSheet = $Excel.WorkSheets.item("Sheet1")
$ExcelWorkSheet.activate()

# Find the last used cell
$lastRow = $ExcelWorksheet.cells.Range("A1048576").End($xlup).row

$nextRow = $lastRow + 1
$range = $ExcelWorkSheet.Range("A$nextRow")
$ExcelWorkSheet.Paste($range)
...