Я написал макрос, который должен взять два Dates (dd.mm.yyyy) в виде строки из таблицы в документе OpenOffice (Writer, а не Calc). Эти два Даты следует объединить с этим: ddmmyyyy-ddmmyyyy. Тогда это должно использоваться как имя файла.Макрос OpenOffice для доступа к содержимому таблицы
Таблица содержит только одну строку и 6 столбцов, первая дата находится в таблице 2: D1: D1, а вторая в таблице 2: F1: F1. Я «перевел» это table2 (1, 4) и table2 (1, 6)
This German site делает то, что я хочу сделать, но с электронными таблицами в OOCalc документе и не OOWriter.
Хватит говорить, вот мой код:
sub save
oDoc=thisComponent
sStartDate = oDoc.Table2(1, 4)
sEndDate = oDoc.Table2(1, 6))
sFilename = sStartDate.String & sEndDate.String
sURL = ConvertToURL("file:///home/cp/Documents/" & sFilename & ".odt")
msgbox sURL
' oDoc.StoreAsURL(sURL, Array())
end sub
Да, я бегу Linux, так что путь должен быть правильным. Когда я пытаюсь запустить этот сценарий, он говорит:
Property or Method not found table2
Я конечно попробовал Google, но так или иначе я не смог найти решение. Намек в правильном направлении могло бы быть достаточно, я догадался, что я должен написать «больше»:
sStartDate = oDoc.getString(table2(1, 4))
или что-то подобное. Не работает. Другое дело, что я пытался использовать (0, 3) вместо (1, 4).
Хорошо, я был бы признателен, если бы кто-то мог мне помочь! :) И я надеюсь, что я сделал все правильно, как я разместил здесь.
Vaelor
EDIT: Теперь я изменил сценарий к этому, в соответствии с PDF содержится в главе 14.9 HERE.
Это выглядит так,
sub save
oDoc=thisComponent
Dim oTable
Dim sTableName As String
sTableName = "Table2"
oTable = oDoc.getTextTables().getByName(sTableName)
' oTable = oTables.getByName(sTableName)
sStartDate = oTable.getCellByPosition(0, 3)
sEndDate = oTable.getCellByPosition(0, 5)
sFilename = sStartDate.String & sEndDate.String
sURL = ConvertToURL("file:///home/cp/Documents/" & sFilename & ".odt")
msgbox sURL
' oDoc.StoreAsURL(sURL, Array())
end sub
Но, до сих пор не работает. Теперь я получаю это исключение IndexOutOfBoundsException. (Я хотел связать его, но он говорит, что я не могу опубликовать более двух ссылок :-()
Моя первая мысль заключалась в том, что мне нужно было сменить cels на 0, 3 и 0, 5. После этого, ошибка все еще происходит :-(
edit2:. Поскольку я не получил никакого ответа, я думаю, я буду стараться это в Python, может быть, это дает лучшие результаты
О, вау, большое спасибо! Некоторое время я отсутствовал, и я не ожидал, что кто-то ответит на это больше! Я попробую, как только смогу! – Vaelor