マイマクロのStandard以外のライブラリの関数を呼びたい

マイマクロの、Standard以外のライブラリに
VBAの関数を置いたのですが、
= function_name ( param )
で呼び出した時に、エラー504が出ます。

これは、何故ですか?
また、呼び出す方法はあるのでしょうか?

ちなみに、私の環境で
https://extensions.libreoffice.org/en/extensions/show/27434
を動かしたところ、同様にエラー504が出ました。
パラメータの渡し方が間違っていたのかも知れませんが、
Calcの?バグの可能性ありと
判断して投稿させていただきます。


Version: 7.5.3.2 (X86_64) / LibreOffice Community
Build ID: 9f56dff12ba03b9acd7730a5a481eea045e468f3
CPU threads: 24; OS: Linux 5.10; UI render: default; VCL: gtk3
Locale: ja-JP (ja_JP.UTF-8); UI: ja-JP
Calc: CL threaded

以下の、別ブックに関数を置けば、
そのブック内では関数を利用できました。

[myFunction.ods|attachment]
(upload://mYAwlwnlb8dm1sS7BHB6uEQMq93.ods) (9.7 KB)

myFunction.ods (9.7 KB)

アップロードに失敗したようなので、再度アップします。
以下の関数が埋め込んであります。

Option VBASupport 1
public Function lunar(p_date)
Y = year(p_date)
M = month(p_date)
D = day(p_date)
C=(((Y-2009) mod 19) * 11 + M + D ) Mod 30
lunar = C
End Function

一部、訂正します。

https://extensions.libreoffice.org/en/extensions/show/27434

こちらは、正常に動作しました。
パラメータの与え方が間違っていただけでした。

拡張機能として関数を作り、配布できるようにしたいと考えていますが、
それだとVBAではなくPythonでコードを書かねばならないように思えます。
何かいい方法はないものでしょうか?

XLOOKUP では、IDLコンパイラ(LibreOffice-SDKに付属)を呼び出して、インターフェースを作成し、Pythonで実装していました。

これだと、VBでは使えない、ということでしょうか??

オンラインハックフェストの中で、英語での質問も投稿されましたが、さっそくMike Kaganskiから返事がきてますね

私なりに調べた結果です。
稚拙ですが、それなりに有益なのではと思っています。
ask91230.odt (33.0 KB)

2 Likes

PythonからBasic呼び出し
ask91230-2.odt (97.5 KB)

日付シリアル値の設定を変更するとうまくいきませんでした

Hdm360.oxt_.pdf (16.5 KB)

ファイル名を強制的にPDFにしました。
こちらの環境で、うまく動かないです。
いくら見ても正しそうなのですが、動くものとDiff取れませんでしょうか?

よろしくお願いします。

解凍するとHdm360フォルダの中にMETA-INFフォルダ他各種ファイルが入っていますが
Hdm360フォルダの中身だけがZip圧縮されるように
という説明でわかっていただけるでしょうか。


手順書zip-50.odp (921.3 KB)

2 Likes

ありがとうございます! 圧縮時のフォルダ構成を忘れておりました。
着実に進みました。 (エラー504がでましたが、ちょっと調べてみます)
また結果を書き込みます!

6月6日 16
6月7日 17
6月8日 18
6月9日 19
6月10日 20
6月11日 21
6月12日 22
6月13日 23
6月14日 24
6月15日 25
6月16日 26
6月17日 27
6月18日 28
6月19日 29
6月20日 0
6月21日 1
6月22日 2
6月23日 3

Hdm360.oxt.pdf (239.7 KB)

できました!
ありがとうございます!

1 Like