質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
LibreOffice Basic

LibreOffice Basicは、LibreOfficeの作業を自動化するプログラミング言語。LibreOfficeは、OpenOffice.orgから派生しており、多くのオペレーティングシステムで利用できるオフィススイートです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

13919閲覧

LibreOffice Basicで他ブックに書き込みたい

slj2023

総合スコア3

LibreOffice Basic

LibreOffice Basicは、LibreOfficeの作業を自動化するプログラミング言語。LibreOfficeは、OpenOffice.orgから派生しており、多くのオペレーティングシステムで利用できるオフィススイートです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2023/11/24 06:29

編集2023/11/24 06:44

実現したいこと

libreofficeで他ブックへの書き込みをしたい

前提

お世話になっております。
この度諸事情によりEXCELvbaからLibreOfficeに移行することになりました。
vbaを使っていたのでそれも移行するのですがどうにもエラーで詰まっています。
ご協力お願いします。

発生している問題・エラーメッセージ

ブック指定ができない。
ブック1.シート1のlibrebasicでブック2.シート1のセルに書き込みをしたいのですが指定方法が分かりません。
ブック自体はどちらも開いている前提で指定する方法はあるのでしょうか

ThisComponent.CurrentController.ActiveSheet = ThisComponent.Sheets.getByName("シート名")

上記のコードでシートをアクティブにする方法は分かっています。同じようにできるのでしょうか?

調査したこと

ネットで検索し調べていますが出てくるのはシートの指定ばかりです。添付コードのsheetの部分をbookに変えるなどやってみましたがうまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

libreoffice7.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

以下で開いている他のファイルに書き込めました。

BASIC

1 Dim oDoc As Object 2 Dim oSheet As Object 3 Dim sDocName As String 4 5 ' 書き込みたいファイルの名前を指定します。 6 sDocName = "無題 2.ods" 7 8 ' 開いているすべてのドキュメントを取得します。 9 Dim oDocs As Object 10 oDocs = StarDesktop.getComponents().createEnumeration() 11 12 13 ' 開いているドキュメントの中から指定した名前のドキュメントを探します。 14 15 Do While oDocs.hasMoreElements() 16 oDoc=oDocs.nextElement() 17 If oDoc.getTitle() = sDocName Then 18 Exit Do 19 End If 20 Loop 21 22 ' シートを取得します。 23 oSheet = oDoc.Sheets.getByName("Sheet1") 24 25 ' セルに値を設定します。 26 oSheet.getCellByPosition(0, 0).setString("1")

投稿2024/01/02 22:00

xail2222

総合スコア1499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

[香車]東上☆あらし☆海美「

https://pineplanter.moo.jp/non-it-salaryman/2017/03/02/vba-on-libreoffice/
LibreOfficeでVBAを使う方法。1行おまじないを書くだけ! - 非IT企業に勤める中年サラリーマンのIT日記(ja)

> LibreOfficeでも、”あるおまじない”をするとVBAが使えるんです。
> それは、エディタのトップに、Option VBASupport 1 という一文を入れるだけ。これだけでVBAが使えます。

これじゃダメですかね

回答への修正依頼 スパムと見受けられる内容を含む回答 2024/01/07 16:03
[香車]東上☆あらし☆海美「
ワシの意見は、貴方と異なります。

投稿2023/11/24 18:41

編集2024/01/08 03:16
umimi

総合スコア251

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

StarDesktopとか,LibreOffice BASIC Programming Guideとかの情報だと,例としては次のような感じでしょうか?

basic

1REM ***** BASIC ***** 2 3Sub Main 4 5Dim Url2 As String 6Dim Doc2 As Object 7Dim Sheet2 As Object 8Dim Cell2 As Object 9DIm Dummy() 10Url2 = ConvertToUrl("/home/ujimushi/Documents/test2.ods") 11Doc2 = StarDesktop.loadComponentFromURL(Url2, " blank", 0, Dummy) 12Sheet2 = Doc2.Sheets.getByName("Sheet1") 13Cell2 = Sheet2.getCellRangeByName("A2") 14Cell2.String = "hogehoge" 15 16End Sub

実行例

投稿2023/11/24 16:30

編集2023/11/24 16:46
ujimushi_sradjp

総合スコア2124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

ご協力いただきありがとうございました。様々参考になる回答があり嬉しく思います。
ただ今回の件に関してはactive指定など必要なく直接

Workbooks("ブック名.ods").Sheets("シート名").Cells(2, 1) = 記載内容

から始めれば問題なく動きました。自分の未熟さには驚きます。
ご協力ありがとうございました。

投稿2024/02/26 05:00

slj2023

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問