【问题标题】:Using Powershell to Append a table to the end of an Excel File (The Last Row)使用 Powershell 将表格附加到 Excel 文件的末尾(最后一行)
【发布时间】:2012-01-17 03:41:29
【问题描述】:

我编写了一个 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) 有什么想法吗?

【问题讨论】:

  • 该问题(尚未)对您的问题/错误/错误/结果有任何描述。出了什么问题?你有什么期待?

标签: excel powershell ms-office


【解决方案1】:

谢谢,我最终选择了一条更加动态的不同路线,而不是使用“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()

【讨论】:

    【解决方案2】:

    $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)
    

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 2016-05-21
      • 2015-07-14
      相关资源
      最近更新 更多