by kawasaki » 9月 25th, 2009, 7:38 pm
お返事ありがとうございます。
質問に返答させていただきます。
まず結論として、図形がずれる現象が回避されました。
ただ、なぜ回避されたのかがちょっとわかりません。
お手数をおかけいたしますが原因が分かるようでしたら、教えていただければと思います。
>この現象はバッチで実行したときのみ発生するのでしょうか?
バッチ実行時のみ発生します。
マクロは「マクロの記録」を使い、一部改編してつくりました。
記録したマクロをODFファイルを開いて実行した場合は発生しません。
>保存したPDF上でずれているのでしょうか?もしくは保存したODF上でずれているのでしょうか?
保存したODF上でずれており、その結果PDF上もずれてしまいます。
>線とは図形描画オブジェクトの線ことでしょうか?他の図形でも同じ現象が発生するのでしょうか?
「図形描画オブジェクトの線」です。
他の図形では発生してません。
また、「図形描画オブジェクトの線」を複数選択し、グループ化した場合はずれることがありませんでした。
>またコードのどの場所で図形の移動が発生するのかわかりますでしょうか?
>ドキュメントを非表示で開くオプションを外して、適当な場所(空行になっている部分)などに msgbox 数字 などのコードを順次
>差し込むかIDEでステップ実行させてみるかでわかると思います。
図形の移動がどこで行なわれているのか特定するために、マクロを修正しました。
下記修正をしたマクロをバッチから起動した場合、図形(線)がずれることはありませんでした。
1.ドキュメントを非表示で開くのではなく、表示させて開くようにしました。
<修正前>
document = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", True ),))
<修正後>
document = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", False ),))
2.「置換/プロパティ変更/保存/PDF出力」それぞれ実行後に、ページの先頭から最後までページを移動するようにして、図形が移動していないか確認できるようにしました。
<実行後に以下の追加>
rem ページの頭から、41ページ分下まで移動
For i = 0 To 40 Step 1
dispatcher.executeDispatch(document.getCurrentController().getFrame(), ".uno:GoToEndOfNextPage", "", 0, Array())
MsgBox("testtest",0,"test")
Next
rem カーソルを一番上に戻す
dispatcher.executeDispatch(document.getCurrentController().getFrame(), ".uno:GoToStartOfDoc", "", 0, Array())
以上となります。
よろしくお願い致します。
OpenOffice 3.0.0
Windows XP Professional