OpenOfficeドキュメント(Calcではなくライター)のテーブルから2つの日付(dd.mm.yyyy)を文字列として受け取るマクロを作成しました。これらの 2 つの日付は、ddmmyyyy-ddmmyyyy にマージする必要があります。これをファイル名として使用する必要があります。
テーブルには 1 つの行と 6 つの列しかなく、最初の日付は table2:D1:D1 にあり、2 番目の日付は table2:F1:F1 にあります。これを table2(1, 4) と table2(1, 6) に「翻訳」しました
このドイツのサイトは私がやりたいことをやっていますが、OOWriter ではなく OOCalc ドキュメントのスプレッドシートを使用しています。
十分な話、これが私のコードです:
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
私はもちろんグーグルを試しましたが、どういうわけか解決策を見つけることができませんでした. 正しい方向へのヒントで十分かもしれません。また、「もっと」書く必要があると思いました。
sStartDate = oDoc.getString(table2(1, 4))
または似たようなもの。どちらも機能しませんでした。私が試したもう 1 つのことは、(1, 4) の代わりに (0, 3) を使用することでした。
誰かが私を少し助けてくれれば幸いです!:)そして、ここに投稿した方法ですべてを正しく行ったことを願っています。
ヴァエロ
編集: 14.9章のこちらにあるPDFによると、スクリプトをこれに変更しました。
今はこんな感じ、
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 を受け取ります。(リンクしたかったのですが、2つ以上のリンクを投稿することはできません:-( )
最初に考えたのは、セルを 0、3、および 0、5 に変更する必要があるということでした。それを変更した後も、エラーは引き続き発生します。:-(
Edit2: 応答がなかったので、Python でこれを試してみると思います。おそらく、より良い結果が得られます。