「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:2851
現在:8


Base(.odb)の「ドキュメント自身」にマクロを登録したい

ページOpenOffice.org FAQの登録ページ
投稿者アシスト谷藤 
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2006-11-14 12:08:28 (火)
OSWindows XP
依存するページfaq/1/146 faq/3/285 Issue #49133 Issue #73331 3.1で修正
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

マクロの保存場所には「マイマクロ」、「OpenOffice.orgのマクロ」
そして「ドキュメント自身」の3つであることを認識しています。
今回、とある『Baseドキュメント自身』にイベント駆動型処理のマクロを
割り当てたいと考えていますが、Writer、Calc、Impress、Drawとも
それぞれのドキュメントがマクロの記録先として認識されますが、
Baseだけ記録先として列挙されません。
(ツール→マクロ→マクロの管理→OOoBasic→ダイアログ上)
Baseの「ドキュメント自身」にマクロを登録したい場合は
どのような手順を踏んだらよいのかご教授いただければと思います。

認識違いなどありましたら併せてご指摘ください。
よろしくお願いします。


フォームとレポートに登録できますが、

M.Kamataki (2006-11-14 21:59:48 (火))

ちょっとわかりにくいかもしれません。Baseファイルに登録ではなく、フォームとレポートにマクロを登録できます。なお、メニューにある「マクロの記録」はいわゆるキーボードマクロを作成するためのメニューです。この部分は、誤解があるかもしれません。

なぜ、マクロを持てるのが上記の2種類かというと、いずれもWriterの機能を使っているので、Writerが本来持っているマクロの機能が使えるわけです。レポートにマクロというのはあまり意味がないので、ふつうはフォームにマクロを登録することになると思います。ただし、BaseではWritrerドキュメントが読み込み専用として開かれるので、Writerでは動くものの、Baseでは動かないマクロが出てきてしまいます。この点サンプルを作成しましたのでご確認ください。

長くなるので、タイトルを分けます。

サンプルの紹介

M.Kamataki (2006-11-14 22:08:01 (火))

Base内のフォームにマクロを登録したもの
filefaq4_79_01.odb

Writerをフォームとしたサンプル
filefaq4_79_01.odt

データソースへの登録方法

M.Kamataki (2006-11-14 22:08:52 (火))

まず、faq4_79_01.odbをデータソースとして、お使いのOpenOffice.orgに登録してください。これを実行しないと、Writerをフォームとしたサンプルが動きません。

登録方法は、ツールメニューの[オプション]でダイアログを開き、[OpenOffice.org Base]−[データベース]を選んで、[新規作成]ボタンをクリックしてください。[データベースリンクを作成]ダイアログで[検索]ボタンでfaq4_79_01.odbを選択、登録名欄に「faq4_79_01」と表示されるので[OK]ボタンをクリックします。

Writerフォームの操作方法

M.Kamataki (2006-11-14 22:15:22 (火))

faq4_79_01.odtを開いてください。[セキュリティ警告]ダイアログが表示されるので、[マクロを有効にする]ボタンをクリックして、開きます。これがWriterで作成したフォームです。画面下に[フォームのナビゲーション]バーがありますので、右向きの三角マークをクリックして、次のレコードを表示します。ID、Dataの入力欄を順にマウスでクリックすると、Dataに自動的にレコード1のデータが入力されます。これはfaq4_79_01.odtに登録されたマクロが実行されたからです。

Baseフォームの操作方法

M.Kamataki (2006-11-14 22:23:23 (火))

faq4_79_01.odbを開いてください。次にフォームの「4_79_01」を開くと、[セキュリティ警告]ダイアログが表示されるので、[マクロを有効にする]ボタンをクリックしてください。faq4_79_01.odtのときと同じように操作すると、一瞬Dataの入力欄に値が表示されますが、すぐ消えるのでマクロがうまく動かないことがわかります。マクロはfaq4_79_01.odtと同じものなのですが。

現状は、こんな感じです。BaseのBasic対応に関しては、Issuesを見ていただければ、要望やバグ登録がいっぱい上がっています。

Writerでフォームを作成すれば、マクロは比較的思い通り動いてくれますが、これは一般にはあまり受け入れられていないようです。

裏技

M.Kamataki (2006-11-14 22:44:23 (火))

faq4_79_01.odbのフォーム「4_79_01」を右クリックして、「編集」を選びます。表示メニューから[ツールバー]−[フォームコントロール]を選んで、[フォームコントロール]バー上の[フォームコントロール オン/オフ]ボタンをクリックします。すると、[フォームのナビゲーション]バーが表示され、データ入力が可能になります。「Writerフォームの操作方法」のとおり操作すると、マクロがうまく実行されます。

違いはタイトルバーに「(読み取り専用)」と表示されないことです。マクロの内容がどうもドキュメントの変更となる動作になっているようです。

というわけで、作成したマクロがすべてBaseのフォームで動かないわけではないです。

再確認

アシスト上原 (2006-11-15 14:01:20 (水))

M.Kamatakiさま

誠に恐縮ですが、急ぎ確認したい事案のため、不在の谷藤に代わりまして、
私、上原より返信させていただきます。

まず、具体的なサンプルでのご説明をいただき、ありがとうございました。

ご説明いただきました内容については理解できたつもりなのですが、下記
につきましての疑問が生じましたので補足をいただけましたら幸いです。

>Baseファイルに登録ではなく、フォームとレポートにマクロを登録できます。

上記は、Baseファイルに登録(=Baseの「ドキュメント自身」にマクロを登録)
できない。という認識で宜しいでしょうか?

>いずれもWriterの機能を使っているので、Writerが本来持っているマクロの
>機能が使えるわけです。

また、フォームとレポートにマクロを登録できるとのことで、これはBaseでマクロ
を持つためには、Writerが本来持っているマクロの機能を使用するとのことで
すが、フォームではなく、添付いたしました(faq4_79_02.odt)ようなダイアログ
は登録できるのでしょうか。

以上、宜しくお願いいたします。

添付ファイルについて

アシスト上原 (2006-11-15 14:13:32 (水))

faq4_79_02.odt(10K)では、いつまで待ってもアップロードできませんでしたので、
faq4_79_02.lzh(7K)にしてアップロードいたしました。

Re: 再確認

M.Kamataki (2006-11-15 15:12:01 (水))

>>Baseファイルに登録ではなく、フォームとレポートにマクロを登録できます。

>上記は、Baseファイルに登録(=Baseの「ドキュメント自身」にマクロを登録)
>できない。という認識で宜しいでしょうか?

わかりにくいかもしれませんが、Baseの「ドキュメント自身」にはマクロは登録されています。ですが、起動直後のBaseで[ツール]−[マクロ]−[マクロの管理]−[OpenOfice.org Basic]とたどってもマクロを確認できません。フォームを表示し、フォームの[ツール]−[マクロ]−[マクロの管理]−[OpenOfice.org Basic]とたどって、初めてマクロを確認できます。

>すが、フォームではなく、添付いたしました(faq4_79_02.odt)ようなダイアログ
>は登録できるのでしょうか。

ダイアログは登録可能です。ただしやはりフォームから利用することになります。faq4_79_02.odtのダイアログをBaseに移植してみました。

サンプル
filefaq4_79_03.odb

をご覧ください。フォームの「4_79_01」をクリックするとダイアログがポップアップします。フォームの属性にあるイベントで「読み込む時」に割り当てています。もし、Baseの起動時のイベントに割り当てることを想定されているならば、Baseのフォームに登録したマクロは呼び出せません。マイマクロなど、共通の保存場所に登録する必要があります。

了解いたしました

アシスト上原 (2006-11-15 16:35:56 (水))

M.Kamatakiさま

またまた、具体的なサンプルでのご説明をいただき、ありがとうございました。

Baseでのマクロの登録は、フォームかレポートにマクロを登録することにより、
Baseの「ドキュメント自身」にマクロが登録されていることとなり、フォームの
イベント属性によるダイアログの利用も可能であることを確認いたしました。

しかしながら、ご指摘いただいております通り、今回のお問い合わせの意図
である「Baseの起動時のイベントに割り当てによるマクロの実行」はできない
とのことですので、残念ながら、MS-Accessのようにフォームが自動起動して
の即時利用ができないことで了解いたしました。

ご対応ありがとうございました。

なお、誠に恐縮ですが、お問い合わせさせていただきました弊社谷藤より、
連絡させていただきますまでの間、本件を保留とさせていただけますよう、
お願い申し上げます。

要望はIssuesに登録されてます

M.Kamataki (2006-11-15 17:48:18 (水))

>MS-Accessのようにフォームが自動起動して
>の即時利用ができないことで了解いたしました。

やはり、そういう要望でしたか。以前にも質問があり、現状の対応策は提示してあります。「Baseのフォームを直接表示したい」(faq/1/146)をご覧ください。英語の掲示板「OOoForum.org」でも同じ対応策が示されていました(OOoForum.orgはDNSから削除された模様で、現在アクセスできません)。

つい最近、関連する要望もIssue登録されました。「かもめ調査隊2006」のメンバーが、直接開発のコミュニティに出向き、開発者の方とコンタクトをとる予定です。

ありがとうございました

アシスト谷藤 (2006-11-15 20:12:52 (水))

M.Kamatakiさま

本日外出しておりサイトにアクセスできず上原から
追加質問させていただき、その経過を今確認いたしました。

最終的に要望としてはあがっているのですね。
いろいろとお手数をかけ、また丁寧なご回答をいただき
ありがとうございました。
現在の状況がよく把握できました。

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

関連する要望

M.Kamataki (2006-11-16 11:39:35 (木))

「フォームを開くボタンを作成したい」(faq/3/285)では、フォーム上のボタンで別のフォームを呼び出したいという要望を登録したIssueの紹介もしています。

Baseファイルへのマクロの登録

M.Kamataki (2006-11-17 10:56:36 (金))

本質問に直接関連するIssueもありました。

「Possibility to put macros in *.odb file」
http://www.openoffice.org/issues/show_bug.cgi?id=49133

なお、本質問は、Issue登録済みの要望とします。

p.s.OOoForum.orgへのアクセスが復活しました。OOoForum.orgの話題としては、以下のものが上がっていました。

「Can't save macros to Base file?」
http://www.oooforum.org/forum/viewtopic.phtml?t=19961

当質問の修正バージョンは3.0になります

M.Kamataki (2007-08-25 09:52:37 (土))

上記で紹介した以下のIssueがクローズされました。
"Possibility to put macros in *.odb file"
http://www.openoffice.org/issues/show_bug.cgi?id=49133

理由は同Issueが依存する下記のIssueでターゲット設定されたバージョン3.0での修正が終了したためです。これで来年後半に登場する予定の3.0で修正されることが決まりました。

"Let the Basic IDE work with XModels instead of SfxObjectShells"
http://ja.openoffice.org/issues/show_bug.cgi?id=73331

;;同時にIDEの改良も必要だったみたいですね。

ご報告ありがとうございます

アシスト谷藤 (2007-08-25 10:21:02 (土))

M.Kamatakiさま

3.0で修正されるとのご報告ありがとうございます。
期待される操作が可能になることを大変うれしく思います!
バージョン3.0の登場を楽しみにしています。

ありがとうございました

ターゲットが3.1に変更

M.Kamataki (2008-05-23 09:57:26 (金))

Issue #49133 をご覧ください。まだいくつか修正を阻むIssueがあるのと、3.0の新機能取り込みが凍結されたため、ターゲットは3.1に変更されました。

完了にします

M.Kamataki (2009-02-16 11:53:41 (月))

3.1開発版で、Issue 49133が修正されているのを確認しました。

ありがとうございます。

アシスト谷藤 (2009-02-16 14:11:34 (月))

M.Kamatakiさま

確認ありがとうございます。
本来の希望操作が可能かどうかをこちらでも確認したいと思います。
何か"気づき"がありましたら別途ご報告させていただきます。

お名前:
題名:


添付ファイル: filefaq4_79_03.odb 1804件 [詳細] filefaq4_79_02.lzh 892件 [詳細] filefaq4_79_01.odt 2255件 [詳細] filefaq4_79_01.odb 2103件 [詳細]