我编写了一个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()
在此之后我觉得我太近了。我试图使用Office Interlop中的UsedRange属性来确定Excel工作表中的最后一行。 (http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.usedrange(v=vs.80).aspx)任何想法?
答案 0 :(得分:2)
谢谢我最终选择了一条更加动态的路线,而不是使用“A9924082480198”作为范围的终点。
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $True
$ExcelWordBook = $Excel.Workbooks.Open($ExcelPath)
$ExcelWorkSheet = $Excel.WorkSheets.item("sheet1")
$ExcelWorkSheet.activate()
$lastRow = $ExcelWorkSheet.UsedRange.rows.count + 1
$Excel.Range("A" + $lastrow).Activate()
$ExcelWorksheet.Paste()
答案 1 :(得分:1)
$ExcelWorkSheet.UsedRange
返回的对象具有属性rows
(不是方法,您不能使用参数)。这意味着$ExcelWorkSheet.UsedRange.rows.count
将起作用,但不会给你想要的结果(它将为你提供最长列的las trow的行号)。
要在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)