質問する
0

外部ファイルに保存した内容をマクロ内にincludeしたい

質問日 2020-06-12 08:44:11 +0200

ゆろ のGravatar画像

いま、以下のような状況でLibreOffice Calcを利用させていただいています。

  • 100近くのodsファイル
  • それぞれのodsファイルに同内容のLibreOffice
  • Basicマクロを含む
  • マクロを修正する際には全odsファイルにその修正を施す必要がある
  • svnやgit等で管理しているため、任意のディレクトリ以下にすべてのファイルを配置

odsファイルが10近くだった今までは手動でメンテナンスをしていましたが、100近くになってくると流石にメンテナンス漏れ等を含め運用が厳しくなってきたので マクロ内でいわゆるC言語で言うところの#includeのようなことを行いたいですが方法がわかりません。

ExcelではVBComponentsを使うとできるようなのですが、LibreOfficeマクロで行うにはどのようにすればよいでしょうか?

Basicにこだわっているわけではなく、python等他の手段でも上記と同等の運用ができるようであれば移行するので何らかの手段があれば教えてほしいです。

よろしくお願いします。

edit retag flag offensive close merge delete

1 Answer

1

回答日 2020-06-12 13:12:38 +0200

himajin100000 のGravatar画像

updated 2020-06-25 11:06:05 +0200

うーん、やっぱり静的リンクっぽく個別のファイルに埋め込むより、動的リンクっぽいライブラリの方が好み(ドキュメント側じゃなくてアプリケーション側に保存)。

とは言え。VBComponentsっぽいものっていうと、例えば…こういう感じのものだろうか?

オマケ: deprecatedになったのは2002年のはずなんだけど、

割と現役で使われている気がする。

使われている気配のない第三引数

その他:

edit flag offensive delete link もっと

Comments

ありがとうございます。

自分の認識が間違っているかもしれませんが、アプリ側のライブラリの場合は「マイマクロ&ダイアログ」「LibreOfficeのマクロ&ダイアログ」に配置するってことですよね? その場合、複数人がLibreOfficeを利用している場合、更新があった場合はそれぞれの環境でsvnで入手してきたライブラリ用のファイルをインポートしなおして使う感じですか? 外部ファイルが更新されていたらLibreOfficeを起動し直すだけで自動で読み込まれ直す、というわけではないですよね?

教えていただいたXStarBasicAccessの場合は2002年に非推奨となっているが現状も使えている。 createLibraryで外部ファイルをソースにすることは出来ないが空のライブラリを作成でき、 SimpleFileAccess等で外部ファイルを文字列として読み込み、addModuleのSourceとして追加して使う、 という話でしょうか?

ゆろ のGravatar画像ゆろ ( 2020-06-12 18:12:22 +0200 )edit

全ておっしゃるとおりです。

その場合、複数人がLibreOfficeを利用している場合、

見落としてました。

himajin100000 のGravatar画像himajin100000 ( 2020-06-12 21:20:54 +0200 )edit

ありがとうございます。 おかげさまでマクロ内から外部ファイルをライブラリとして呼び出せるようになりました。

ゆろ のGravatar画像ゆろ ( 2020-06-13 16:34:49 +0200 )edit

それは良かった。

(それにしても何で俺リンクしているのがTextOutputStreamなんですかね?TextInputStreamを紹介すべきところなのに。←この自己ツッコミをしたかっただけのコメント(汗)

(書き換えた)

himajin100000 のGravatar画像himajin100000 ( 2020-06-13 16:52:35 +0200 )edit
ログイン/サインアップして回答する

質問ツール

1 follower

Stats

Asked: 2020-06-12 08:44:11 +0200

Seen: 63 times

Last updated: Jun 25