LibreOffice Writer:获取找到的下一个单元格的内容
Posted
技术标签:
【中文标题】LibreOffice Writer:获取找到的下一个单元格的内容【英文标题】:LibreOffice Writer: get contents of the next cell to the found one 【发布时间】:2018-07-12 18:35:57 【问题描述】:我需要在 Writer 表中找到一些文本,然后将找到的文本右侧单元格的内容放入变量中。使用此代码成功找到文本:
Sub get_contr_num
dim oDoc as Object
dim oFound as Object
dim oDescriptor
dim oCursor as Object
oDoc = ThisComponent
oDescriptor = oDoc.createSearchDescriptor()
oDescriptor.SearchString = "Contract *No"
oDescriptor.SearchRegularExpression = true
oFound=oDoc.FindFirst(oDescriptor)
End Sub
现在我需要获取正确单元格的内容。据我了解,oFound
是XTextRange
的对象,我需要带有行和列参数的XCellRange
。我该怎么做?
【问题讨论】:
【参考方案1】:来自Andrew Pitonyak, 2015 的第 7.1.2 节:
TextRange 对象有一个 TextTable 属性和一个 Cell 属性。 如果文本范围包含在 文本表格单元格。
这里是示例代码。
cellname_found = oFound.Cell.CellName
cellname_right = Chr(Asc(Left(cellname_found, 1))+1) & Right(cellname_found, 1)
oTable = oFound.TextTable
oCell_right = oTable.getCellByName(cellname_right)
如果CellProperties 给出行号和列号而不是名称会更容易。显然没有,所以需要使用string manipulation来解析CellName
属性。
【讨论】:
谢谢,修改后有效:cellname_right = Chr(Asc(Left(cellname_found, 1))+1) + Mid(cellname_found, 2)
。因为虽然列通常不会超过 A-Z 范围,但在我的例子中,行号包含多个数字。以上是关于LibreOffice Writer:获取找到的下一个单元格的内容的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 Visual Basic 6 中导入 LibreOffice Writer 的监听器事件
将表格从 R 获取到 Libre Office Writer 的最佳方法?
LibreOffice 4.1 Writer:调整表格列宽的宏