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

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

新規登録して質問してみよう
ただいま回答率
85.37%
BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

Q&A

解決済

1回答

377閲覧

libreofficeのマクロを使い、calc にヘッダーを入れたい

HorinoTora

総合スコア10

BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

0グッド

0クリップ

投稿2024/01/07 09:45

実現したいこと

Libreoffice calc に basic を用いて、ヘッダー挿入を行いたい。

前提

calc を起動して、表(シート)を作成します。
作成されたシートにマクロを起動してフアィル名、作成(更新)日時、シート名を
ヘッダーとして記入したい。(フアィル名、更新日時、シート名などの取得には
成功しています。)

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

マクロの杜にあるサンプルプログラムをテストしたところ、実行すると新たなcalc が起動して
そこへ、ヘッダー挿入が行われます。

該当のソースコード

サンプルは以下のURLにありました。
https://openoffice3.web.fc2.com/OOoBasic_General2.html#OOoGSHF1a

マクロの杜にあるサンプルの初めの部分は以下のものです。
Sub oHeader_Footer
Dim oDoc As Object
Dim Dummy()
oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Dummy())
oPageStyles = oDoc.StyleFamilies.getByName("PageStyles")
oDefault = oPageStyles.getByName("Default")```

実行するとoDoc = ...の行で新たなcalcが起動します。

試したこと

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

writerでは以下のプログラムでヘッダーに書き込むことは成功します。
しかし、これをcalcに適用するとうまく動かない。
Sub execHeader_writer( sText as string )
rem -------------------
Dim oPageStyles as Object
Dim oPageStyle as Object
Dim Htext as Object
On Error Goto ErrorHandler
oPageStyles =oDoc.StyleFamilies.getByName( "PageStyles" )
oPageStyle = oPageStyles.getByName( "Standard" )
'Set Header
wait(100) ' 100ms wait
oPageStyle.HeaderIsOn = true
Htext = oPageStyle.HeaderText
HText.String = sText

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

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

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

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

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

guest

回答1

0

ベストアンサー

BASIC

1Sub test() 2 Dim oPageStyle as Object 3 Dim oHC as Object 4 Dim oFC as Object 5 6 oPageStyle=ThisComponent.StyleFamilies.getByName("PageStyles").getByName("Default") 7 oPageStyle.HeaderIsOn = True ' ヘッダーを付ける 8 oPageStyle.HeaderIsShared=True ' 左右のページで同じ内容(ヘッダー) 9 oPageStyle.FirstPageHeaderIsShared=True ' 最初のページと同じ内容(ヘッダー) 10 oPageStyle.FooterIsShared=True ' 左右のページで同じ内容(フッター) 11 oPageStyle.FirstPageFooterIsShared=True ' 最初のページと同じ内容(フッター) 12 13 oHc=oPageStyle.RightPageHeaderContent 14 oHc.LeftText.String="上左" 15 oHc.CenterText.String="上中" 16 oHc.RightText.String="上右" 17 oPageStyle.RightPageHeaderContent=oHc 18 19 oFC=oPageStyle.RightPageFooterContent 20 oFC.LeftText.String="下左" 21 oFC.CenterText.String="下中" 22 oFC.RightText.String="下右" 23 oPageStyle.RightPageFooterContent=oFC 24 25end Sub

最初のページとか、左右で分ける場合は、FirstPageHeaderIsSharedとHeaderIsSharedでヘッダー、
FirstPageFooterIsSharedとFooterIsSharedでフッターを制御して
FirstPageHeaderContent、FirstPageFooterContent
及び
LeftPageHeaderContent、LeftPageFooterContent
で、設定する感じのようです。

投稿2024/01/07 11:03

編集2024/01/10 14:02
xail2222

総合スコア1508

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

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

HorinoTora

2024/01/10 00:51

教えていただいたサンプルで成功しました。どうもありがとうございました。長年の懸案を解消することが出来ました。
xail2222

2024/01/10 16:07

ちょっと回答修正しました。長年だったのですね。前の質問も見てたのですが、質問タイトルが初め違っていたので回答控えていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問