3

reStructuredText to MS Wordドキュメントツールチェーンを構築しようとしているので、バージョン管理で最初のソースのみを保存できます。

これまでのところ私は-

rst2odt.pyを使用して、reStructuredTextをOpenOffice.orgWriter形式に変換します。

次に、Word 97/2000 / XPドキュメントを生成するかなり適切な作業を行う最新のOpenOffice.org(現在は3.1)を使用したいので、マクロを作成しました。

sub ConvertToWord(file as string)
  rem ----------------------------------------------------------------------
  rem define variables
  dim document   as object
  dim dispatcher as object
  rem ----------------------------------------------------------------------
  rem get access to the document
  document   = ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

  rem ----------------------------------------------------------------------
  dim odf(1) as new com.sun.star.beans.PropertyValue
  odf(0).Name = "URL"
  odf(0).Value = "file://" + file + ".odt"
  odf(1).Name = "FilterName"
  odf(1).Value = "MS Word 97"
  dispatcher.executeDispatch(document, ".uno:Open", "", 0, odf())

  rem ----------------------------------------------------------------------
  dim doc(1) as new com.sun.star.beans.PropertyValue
  doc(0).Name = "URL"
  doc(0).Value = "file://" + file + ".doc"
  doc(1).Name = "FilterName"
  doc(1).Value = "MS Word 97"

  dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, doc())
end sub

しかし、私がそれを実行すると:

soffice "macro:///Standard.Module1.ConvertToWord(/path/to/odt_file_wo_ext)"

「BASICランタイムエラー。プロパティまたはメソッドが見つかりません。」というメッセージが表示されます。メッセージオンライン:

document   = ThisComponent.CurrentController.Frame

そして、その行にコメントすると、上記の呼び出しはエラーなしで完了しますが、何もしません。どういうわけか、新しく作成されたインスタンスに値を設定する必要があると思いdocumentますが、その方法がわかりません。

それとも私は完全に逆行しているのでしょうか?

PS依存関係を最小限に抑えようとしているため、JODConverterをフォールバックと見なします。

4

1 に答える 1

0

JODConverter (フォールバック) を使用することをお勧めします。これは、必要なものが得られ、OpenOffice/LibreOffice が DOC フィルターを改善した場合に、毎回マクロをインストール/アップグレード/テストする必要がないためです。それも十分に証明されています。

于 2011-12-08T07:55:25.560 に答える