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

Q&A集[?]

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

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

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

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:2605
現在:4


CLI用のUNOを使用してマクロのあるCALCを呼び出すとエラーになります。

ページOpenOffice.org FAQの登録ページ
投稿者匿名
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-10-17 15:05:45 (日)
OSWindows2003
依存するページ
バージョン
edit/refer

メッセージ

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

C#からCLI用のUNOを使用してマクロのあるCALCを呼び出すとエラーになりました。
マクロは「文書を保存またはエクスポートした時」に割り当てています。

Sub Main
   oDoc = ThisComponent
   oSheet = oDoc.Sheets(0)

のSheets(0)のところで
Basic ランタイムエラー
次のプロパティーまたはメソッドが見つかりません:Sheets

となります。
CALC単体ではこのマクロは正常終了しました。
解決方法はありますでしょうか?

■追記
皆様、回答ありがとうございます。
情報を追記いたします。

C#からCLI用のUNOを使用してのマクロというと参考にされたのは、以下のサイトでしょうか。

C#.NETでOpenOfficeを使おう!
http://software.yworks.net/openoffice/

上記サイトを参考にしました。

ODF 表計算ドキュメントテンプレートを用意して、

PropertyValue[] prop = new PropertyValue[1];
prop[0] = new PropertyValue();
prop[0].Name = "Hidden";
prop[0].Value = new uno.Any(true);
XSpreadsheetDocument doc =(XSpreadsheetDocument)componentLoader.loadComponentFromURL("なんちゃら.ots", "_blank", 0, prop);


とドキュメントを開き、データをプロットしたあとに

PropertyValue[] innerprop = new PropertyValue[1];
innerprop[0] = new PropertyValue();
innerprop[0].Name = "InitialView";
innerprop[0].Value = new uno.Any(0);
PropertyValue[] prop;
prop = new PropertyValue[3];
prop[0] = new PropertyValue();
prop[0].Name = "FilterName";
prop[0].Value = new uno.Any("calc_pdf_Export");
prop[1] = new PropertyValue();
prop[1].Name = "Overwrite";
prop[1].Value = new uno.Any(true);
prop[2] = new PropertyValue();
prop[2].Name = "FilterData";
prop[2].Value = new uno.Any(typeof(PropertyValue[]), innerprop);
XStorable store = (XStorable)doc;
store.storeToURL("なんちゃら.pdf", prop);

とPDFをエクスポートして終了するプログラムにおいてStore時にエラーが発生しました。
Hidden=TrueですがOpenOffice.org Basicの画面が立ち上がってきて
oSheet = oDoc.Sheets(0)
の行を指し示していました。


UNO/CLI用のライブラリ

M.Kamataki (2010-10-18 12:02:49 (月))

C#からCLI用のUNOを使用してのマクロというと参考にされたのは、以下のサイトでしょうか。

C#.NETでOpenOfficeを使おう!
http://software.yworks.net/openoffice/

このような情報も加えておくと、回答の役に立つと思います。

さて、回答できる方はいらっしゃるでしょうか。

情報不足

はにゃ? (2010-10-18 23:40:06 (月))

一般的に、Sheets メソッドが見つかりません、となるのは ThisComponent が示すドキュメントが com.sun.star.sheet.SpreadsheetDocument サービスをサポートしていない時、つまり Calc のドキュメントでない時です。

それ以上は、書かれている情報だけでは不明としかいえません。

Hidden 状態での ThisComponent の値

はにゃ? (2010-10-20 18:44:16 (水))

エラーを再現できた状態によると、Hidden 状態での ThisComponent の値の問題のようです。IsNull(oDoc) = False なことが問題ですが・・・、css.beans.Introspection サービスで inspect したところ、値は void だったので。

イベント駆動型マクロなので次のようにするべきのようです。

Sub Main(ev)
  oDoc = ev.Source
' ...
End Sub

マクロの保存場所と割り当ての保存場所が書かれていなかったので、同じ状態が再現できていればですが。

解決しました。

質問した者です (2010-10-20 19:38:12 (水))

はにゃ?さん、ありがとうございます。

マクロの記録先が
マイマクロ>standard>module1

マクロのある場所が
Module1>main
としていました。

お名前:
題名: