2016-11-09 3 views
0

ODT 문서에 명명 된 테이블이 있고 모든 내용이 포함 된 마지막 행을 새로운 행 (위)에 복제 한 다음이 복제본의 일부 값을 바꿉니다.BASIC을 사용하여 LibreOffice 테이블의 마지막 행 복제

이미 DOCX 용 Word/VBA에서 이런 짓을했습니다

Dim tbl As Table 
Dim rowNew As Row 

Set tbl = ActiveDocument.Tables(1) 
Set rowNew = tbl.Rows.Add(tbl.Rows(tbl.Rows.Count)) 
rowNew.Range.FormattedText = tbl.Rows(tbl.Rows.Count).Range.FormattedText 
'~~~> This is required as the above code inserts a blank row in between 
tbl.Rows(tbl.Rows.Count - 1).Delete 
rowNew.Select 
Selection.Find.Execute FindText:="xx*", ReplaceWith:="bar", MatchWildcards:=True 
Selection.Collapse 

은 LibreOffice와도 가능한이 있습니까? 지금까지 내가 가진 :

DIM tbl As Variant 
DIM row As Variant 
tbl = ThisComponent.getTextTables().getByIndex(0) 
row = tbl.getRows().getByIndex(tbl.getRows().getCount()-1) 

는 어떻게 선택하고 전체 및 실행 검색 &이 새 행에서 대체 복제 할 수 있습니다? 힌트 : 행에는 서브 테이블과 같은 다른 객체가 포함될 수 있습니다.

답변

1

먼저 View Cursor을 이동하여 전체 행을 선택하십시오. 그런 다음 디스패처를 사용하여 복사하여 새 행에 붙여 넣습니다. 다음과 같은 내용 :

oVC.goRight(3, True) 'Extend the selection. 
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array()) 
dispatcher.executeDispatch(document, ".uno:InsertRowsAfter", "", 0, Array()) 
oVC.goDown(1, False) 'Move to the new row. 
oVC.goLeft(2, False) 'Move to the first column. 
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array()) 
관련 문제