PowerShell - 如何 select Word 文档中最后 table 的最后一行,将其复制并作为新行插入到 table 的底部?

PowerShell - How can I select the last row of the last table in a Word document, copy it, and insert as a new row at the bottom of the table?

我正在努力提高日常工作的自动化水平,其中一部分涉及在包含基本相同信息的报告中的 table 末尾添加一行,更改了一些单元格(新日期)。

我对 VB 和 C++ 有一点经验,但在 PowerShell 方面我非常业余,它似乎是任务自动化的首选。

我有几个 PowerShell 脚本可以搜索报告正文并更改文本,但报告的最后部分是一条记录,需要附加而不是修改。

我该怎么做?

我曾尝试修改我在网上找到的一些 PowerShell 代码,但无济于事。我已经 select 在正确的 table 中排了一行,但我不知道如何 select 最后一行,复制它并将其作为新的插入下面table 底部的行:

$objWord = New-Object -ComObject word.application
$objWord.Visible = $True
$objWord.Documents.Open("FILEPATH")
$FindText = "KEYTEXT"
$objWord.Selection.Find.Execute($FindText)
$objWord.Selection.SelectRow()

这是一个冗长的示例,其中的解释可以满足您的需求:

# open document 
$objWord = New-Object -ComObject word.application
$objWord.Visible = $True
$doc = $objWord.Documents.Open("C:\temp\temp.docx")

# search for row
$FindText = "Value2"
$result = $objWord.Selection.Find.Execute($FindText)
$objWord.Selection.SelectRow()

# copy the ranges from searched row
$table = $objWord.Selection.Tables[1]
$copiedCells = $objWord.Selection.Cells | select columnindex,rowindex

# add row at the end of table
$table.Rows[$table.Rows.Count].Select()
$objWord.Selection.InsertRowsBelow(1)

# insert copied text into each column of last row
foreach ($cell in $copiedCells) {

  # copy value from cell in copied row
  $copiedText = $table.Cell($cell.rowindex, $cell.columnindex).Range.Text

  # remove last 2 characters (paragraph and end-of-cell)
  $TrimmedText = $copiedText.Remove($copiedText.Length - 2)

  # set value for cell in last row
  $table.Cell($table.Rows.Count,$cell.columnindex).Range.Text = $TrimmedText
}