Writerのマクロをバッチファイルから起動した際、図形がずれてしまう

マクロの作成、スクリプトの作成、APIの使い方

Writerのマクロをバッチファイルから起動した際、図形がずれてしまう

投稿記事by kawasaki » 9月 17th, 2009, 5:09 pm

こんにちは。
マクロの作り方がわるいのか、「Writerのマクロをバッチファイルから起動した際、図形がずれてしまう」という現象が発生します。
原因がわからず困っています。
なにか知っている情報がありましたら教えてください。

<Version>
WndowsXP Professional Version2002 Service Pack3
OpenOffice.org 3.0.0 OOO300m9 Build:9358

<マクロの仕様について>
・文字列の置換を行なう
・プロパティのユーザー部分の情報を置き換える。
・変更を保存後、PDFファイルにする。

<現象>
添付ファイルのマクロを登録します。(VersionEditorという名前で登録)
添付ファイルのバッチファイルを起動し、マクロを実行します。
変更前のファイルの中に、線が入っていた場合、添付画像のようにページの四隅のどこかに移動します。
特定ファイルで起こるわけではありません。
また、新規・既存ファイル両方とも発生します。

線の移動が起こらないようにする方法などわかりましたら教えていただけると助かります。

以上となります。
よろしくお願い致します。
添付ファイル
Sample.zip
マクロ・バッチファイル・画像
(4.41 KiB) ダウンロード数: 353 回
OpenOffice 3.0.0
Windows XP Professional
kawasaki
 
記事: 5
登録日時: 9月 17th, 2009, 4:27 pm

Re: Writerのマクロをバッチファイルから起動した際、図形がずれてしまう

投稿記事by tani » 9月 18th, 2009, 6:37 pm

この現象はバッチで実行したときのみ発生するのでしょうか?
保存したPDF上でずれているのでしょうか?もしくは保存したODF上でずれているのでしょうか?
線とは図形描画オブジェクトの線ことでしょうか?他の図形でも同じ現象が発生するのでしょうか?

またコードのどの場所で図形の移動が発生するのかわかりますでしょうか?
ドキュメントを非表示で開くオプションを外して、適当な場所(空行になっている部分)などに msgbox 数字 などのコードを順次
差し込むかIDEでステップ実行させてみるかでわかると思います。

このあたりの情報があると原因や解決策や回避策が出やすいように思います。
tani
 
記事: 60
登録日時: 6月 13th, 2008, 10:12 am

Re: Writerのマクロをバッチファイルから起動した際、図形がずれてしまう

投稿記事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
kawasaki
 
記事: 5
登録日時: 9月 17th, 2009, 4:27 pm

Re: Writerのマクロをバッチファイルから起動した際、図形がずれてしまう

投稿記事by tani » 9月 28th, 2009, 12:08 pm

なんとなく、「非表示で」開いたドキュメントに対してマクロ記録で取得したコードを適用しているために、
どこかおかしくなっているのかなーとも想像できますので、ためしにカーソル移動している部分と
テキストを置換している部分のコードを、以下のページの下の方にある置換方法に変えてみると
どうでしょうか。

http://wiki.services.openoffice.org/wik ... _Documents

外していたらごめんなさい。
tani
 
記事: 60
登録日時: 6月 13th, 2008, 10:12 am

Re: Writerのマクロをバッチファイルから起動した際、図形がずれてしまう

投稿記事by kawasaki » 2月 15th, 2011, 2:55 pm

tani様

返答ありがとうございました。

>ためしにカーソル移動している部分と
>テキストを置換している部分のコードを、以下のページの下の方にある置換方法に変えてみると
>どうでしょうか。

上記試してみましたがうまくいきませんでしたが、
ドキュメントを表示させてバッチを実行させることで回避出来ました。

ありがとうございます。
OpenOffice 3.0.0
Windows XP Professional
kawasaki
 
記事: 5
登録日時: 9月 17th, 2009, 4:27 pm


Return to マクロと UNO API

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]