* マクロ ファイルの格納場所変更 [#k3e3732c]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|new_OOo3|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(普通,faq03,priority)|
 |~状態|#listbox3(完了,faq03,state)|
 |~カテゴリー|#listbox3(その他,faq03,category)|
 |~投稿日|2010-06-27 18:24:21 (日)|
 |~OS|WindowsXP SP3|
 |~依存するページ||
 |~バージョン|#listbox3(3.2.1,faq03,version)|
 
 //////////バグ対策(以降マッチさせない)
 
 ** メッセージ [#gd62aa5b]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 お世話になっております。
 
 現在、OpenOffice.org Calcに関するマクロを作成しております。
 マクロ言語はJavaScriptを使用する予定です。
 JavaScriptマクロは
 「ツール」=>「マクロ」=>「マクロの管理」=>「JavaScript」=>「あなたのマクロ」
 内に作成するLibrayに格納されます。(下図を参照下さい。)
 
 #ref(macro格納.png)~
 
 Windowsの絶対Pathで記すと
 C:\Documents and Settings\User名\Application Data\OpenOffice.org\3 \user\Scripts\javascript\Library4
 
 このマクロ格納場所に関する以下の事柄に付いてご教示頂けます様お願いします。~
 [ 質問 ]~
 1)マクロ格納場所を変更する事は可能ですか?~
 2)変更可能な場合、変更方法をご教示下さい。~
 3)変更可能な場合、変更箇所をIntra Net(宅内LAN)上を指定する事は可能ですか?~
 4)変更可能な場合、Calc sheet上に作成するボタンとの関連付けの方法をご教示下さい。~
 
 [ 変更したい理由 ]~
 組織おける無形資産であるマクロの管理は個人に委ねられているのが現状だと思っています。~
 その為、マクロ作成者がいなくなるとマクロ自体が使えなくなるという話を良く聞きます。~
 そこで、マクロの管理を組織NetWork上にて一元管理出来れば非常に有益だと考えております。~
 特にOpenOffice.orgのマクロ言語はJavaScriptやPythonというWeb言語をSupportしているので、良い方法があるのではとnet検索しておりましたが、自身の能力では追いつけないものである事を悟り、皆様のお知恵を拝借させて頂けます様お願いします。~
 
 ズバリの回答で無く、アイデアも歓迎ですので、宜しくご回答を頂けます様お願いします。~
 
 
 
 
 ----
 ***場所の変更 [#f1ebf262]
 >はにゃ? (2010-06-27 21:31:24 (日))~
 ~
 マクロの URI (vnd.sun.star.script:...) をどこに割り振るかは各言語用のスクリプトプロバイダが決めます。JavaScript では css.script.provider.ScriptProviderForJavaScript になります。このサービスは Java で実装されておりスクリプトの場所のあなたのマクロ (user) は bootstarp.ini ファイルで指定された UserInstallation から取得されます。~
 ~
 サービスを追加するとできそうなのは変更可能のうちに入りますかね…?~
 
 //
 ***無題 [#z9577f5c]
 >tani (2010-06-28 11:46:36 (月))~
 ~
 (4)の要件で、シート上にボタンがついているとあります。~
 ということは、素直に考えると、そのドキュメント内にマクロを含めて、ドキュメントごとネットワーク内で配布する(そのドキュメントの管理は管理者が行う)のが一番シンプルだと思います。それだとダメな理由が何かあるのでしょうか?~
 ~
 あと、Webアプリ上のJavaScriptとは全く異なっていて、しかもちょっとめんどくさいJavaScriptマクロにこだわる理由がよくわかりませんでした。(PythonならOOo Basicより良いことも多そうだと思いますが。)~
 
 //
 ***ご回答ありがとうございます。 [#a56db08b]
 >new_OOo3 (2010-06-29 19:04:05 (火))~
 ~
 はにゃ? 様~
 ~
 教えて頂きましたfile(bootstarp.ini)を変更して保存場所を変更できました。~
 しかし、欲を言えば保存先をURL指定(例えば192.168.**.***/temp)等とイントラネット上する方法がありましたら、追加質問で恐縮ですがご教示頂けます様お願いします。~
 ~
 tani 様~
 ご指摘の通りMacroをDocuentに含めて配布すれば良いのですが、OpenOffice.org BasicしかDocument付属のマクロとして保存できません。~
 もし、PythonやJavaScriptマクロをDocument付属にする方法をご存知でしたらご教示頂けます様お願いします。~
 また、~
 >ちょっとめんどくさいJavaScriptマクロにこだわる理由~
 =>ご指摘の通りめんどうですが、Pythonを使ったPrograminng経験が無い事とJavaScritマクロの例題を運良く見つけれたので、JavaScriptのマクロを使っています。~
 勿論、処理時間を気にしないマクロはOpenOffice.org Basicにて作成しております。~
 ゆくゆくはPythonマクロに挑戦したいと思っています。~
 
 //
 ***Re: ご回答 [#g4e61b33]
 >はにゃ? (2010-06-29 21:00:01 (火))~
 ~
 >教えて頂きましたfile(bootstarp.ini)を変更して保存場所を変更できました。~
 設定ファイルなどを指定しているので普通は変更してはいけません。~
 >OpenOffice.org BasicしかDocument付属のマクロとして保存できません。~
 JavaScript のマクロであればツール - マクロ - マクロの管理 - JavaScript からドキュメント内にマクロを作成できます。移動はできないので既存のものを入れたいときにはコピー&ペーストになると思います。~
 Python のマクロの場合には以下に記載があります。~
 http://udk.openoffice.org/python/scriptingframework/index.html~
 拡張機能で容易に入れることもできます。Python で書いたマクロはデータベースの odb ファイルにマクロを保存してフォームのボタンから実行できませんので注意が必要です。~
 Java のマクロでも現在は同様に手作業で入れることになります。入れるマクロを書くと簡単です。~
 ~
 >JavaScritマクロの例題を運良く見つけれたので~
 運いいですね…。JavaScript のマクロは速いんですかねぇ。ベンチマークを見てると問題なさそうでした。API コールとバージョン依存は分かりませんけど。~
 
 //
 ***Python のマクロの場合 [#nf925b43]
 >ike@九州 (2010-06-30 09:29:54 (水))~
 ~
 >Python で書いたマクロはデータベースの odb ファイルにマクロを保存してフォームのボタンから実行できませんので注意が必要です。~
 ~
 フォーム上からは odb ファイル内の Python マクロを間接的に実行する以下の Basic マクロを使う必要があるんですね。(そうしないと script エラーとなりました)~
  Sub Test(ev)
   sMacroPath = "push_me.py$pushMe"
   CallPythonMacroWithEvent(ThisDatabaseDocument, sMacroPath, ev)
  End sub
  
  Sub CallPythonMacroWithEvent(oDoc As Object, sPart As String, ev As Object)
   sURI = "vnd.sun.star.script:" & sPart & "?language=Python&location=document"
   oSP = oDoc.getScriptProvider()
   oScript = oSP.getScript(sURI)
   If NOT IsNull(oScript) Then
     oScript.invoke(Array(ev), Array(), Array())
   End If
  End Sub
 ~
 Python マクロをマイマクロ内に保存した場合は通常通り~
 フォーム上のボタン割り当てから直接実行できる事も確認できました。~
 
 //
 ***無題 [#ad1843e1]
 >tani (2010-06-30 17:39:04 (水))~
 ~
 なるほど。単にマクロをファイルに含めるやり方がややこしいという話だったんですね。~
 シートと機能を綺麗に分離したいという要件なのかな、とか、それだとシート上にボタンを配置するという要件と矛盾する、とか勝手にアレコレ想像してしまいました。~
 ちなみにデータと機能を分離するのであれば、拡張機能にして、ボタンはツールバーの上とかに配置するのが良いのではないかな、と思います。~
 ~
 実行速度は、計算量が多いとき以外は、気にする必要はないんじゃないですかねー。(どの言語でもそんなに変わんない気がします。むしろOOo自体の遅さが気になったり・・・)~
 
 //
 ***拡張機能とするなら [#q1dd894c]
 >はにゃ? (2010-06-30 18:31:53 (水))~
 ~
 それで拡張機能はオンライン更新というわけですね。~
 http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Extensions/Online_Update_of_Extensions~
 
 //
 ***JavaScript マクロのドキュメントへの保存関連の issue [#a9c87fee]
 >はにゃ? (2010-06-30 21:24:53 (水))~
 ~
 ちょっと見ていたら 3.2 での不具合で次のようなものがありました。3.2.1 でも同様のエラーが出ます。BeanShell でも同様ですねぇ。追記: DEV300m83 では問題ありませんでした。~
 ~
 Error saving JavaScript Scripts~
 http://www.openoffice.org/issues/show_bug.cgi?id=112157~
 
 //
 ***皆様 ありがとうございます。 [#f2fd1af7]
 >new_OOo3 (2010-07-01 23:26:13 (木))~
 ~
 はにゃ?様 tani様 ike@九州様~
 ~
 色々とご教示頂きましてありがとうございます。~
 ただ、自身の知識不足の為に皆様の話が「雲の上」から聞こえているようです。~
 なんとか理解しようと昨日より検索に明け暮れましたが、知識不足を補う事は出来ませんでした。~
 今回、ご教示頂いた事を活かせる様に精進しますので、今後とも宜しくお願いします。~
 
 //
 ***まとめ [#a3fd712d]
 >はにゃ? (2010-07-02 02:16:27 (金))~
 ~
 まとめ。~
 ~
 - マクロをドキュメント内のボタンなどに割り当てて利用するのであれば、ドキュメントに同梱しておくのがよさそう~
 - ドキュメントとマクロを分離しておきたいのであればマクロは拡張機能にいれて配布する手もある~
 - マクロの格納場所を簡単に変更する方法はない~
 ~
 マクロをドキュメント内に入れる関連~
 - JavaScript、BeanShell のマクロも Basic と同じようにドキュメントに同梱できます。ツール - マクロ - マクロの管理 - 各言語から行います。ですが、3.2 および 3.2.1 ではバグのせいでドキュメント内に保存できません。~
 - Java および Python でも同じように同梱できます。Java は ODF ファイルを解凍してマクロのファイルを追加、MIME-INFO/manifest.xml を編集する必要があります。Python でも同様の作業で入れることができますが、http://hermione.s41.xrea.com/pukiwiki/index.php?OOobbs2%2F194 を利用するとツール - マクロ - マクロの管理 - Python からドキュメント内にマクロをいれることができます。~
 -- Python のマクロをデータベースファイル中に入れて、そのデータベースドキュメント中のフォームのボタンなどから実行しようとすると上記の様に実行できません。元ネタ: http://hermione.s41.xrea.com/pukiwiki/index.php?OOobbs3%2F7~
 ~
 拡張機能の利用関連~
 - 拡張機能パッケージとしてマクロを配布、各 OpenOffice.org にインストールしてツール - マクロ - マクロの実行から利用できます。~
 - この拡張機能パッケージはオンラインで更新できます。概要: http://hermione.s41.xrea.com/pukiwiki/index.php?Extensions%2FOnlineUpdate~
 
 //
 #article