ヘッダ、フッタでセルの参照 †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | 匿名 |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2010-01-20 15:18:04 (水) |
OS | Windows XP |
依存するページ | |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
シート名や日付はボタンがあって選択出来ますが、シートとセルを指定してそこを参照するようなことは可能でしょうか?
よろしくお願いします。
もう少しご説明を †
M.Kamataki (2010-01-20 15:34:55 (水))
「ヘッダ(ページスタイル:標準)」ダイアログがありますね。こちらの「ユーザー定義ヘッダー」欄に、ボタンが並んでおり、「シート名」「日付」などがあります。こちらの設定に関しての質問ですね。
「シートとセルを指定して」というのは、「Sheet1.A101」というような指定でしょうか。
また、目的を書いていただくとわかりやすいと思います。
その通りです †
匿名 (2010-01-20 15:40:19 (水))
普段シートを日付別などで作成してヘッダでシート名を指定していたのですが、分けていたシートを1つのシートにまとめてみようと思ったのですが、その場合にヘッダにどうやって任意の日付を自動で入れようかと思った次第です。
そこでセルを参照する方法があればと思い質問させてもらいました。
簡単なサンプルを添付致します。
B1のセルにオートフィルタで選択したのと同じものを入力してそれがヘッダで指定出来ればと考えております。
さらにお聞きします †
M.Kamataki (2010-01-21 20:17:25 (木))
サンプルの 1シート.ods を見ると、A3からA9まで「月」という曜日名が並んでいます。例えば、A3セルの参照フィールドをヘッダに挿入したいということでしょうか。
また月曜日の表とは別に、火曜日、水曜日の表を印刷する場合、ヘッダの書き換えが必要になると思いますが、このあたりの運用はどうお考えですか。
無題 †
匿名 (2010-01-22 12:21:55 (金))
原始的ではありますが、B1セルにオートフィルタで選択した曜日と同じ曜日を手入力してB1セルをヘッダで参照出来たらと考えています。
マクロを使うことになると思います †
M.Kamataki (2010-01-22 15:07:45 (金))
Excel 2003を調べてみましたが、ヘッダやフッタにセルを参照するフィールドを埋め込むことはできないようでした。Calcにそのような機能が付いても、Excelとは相互運用ができなくなります。また、OpenDocument Format(ODF)の仕様変更が絡むと大変です。今回のようなご質問は、やはりマクロで対応するのが良いと思います。
以下にサンプルを用意しました。
faq5_236sheet.ods
マクロが含まれているので、オプションのセキュリティにある「マクロセキュリティ」の設定が「高」であれば「中」に変更する必要があります。ファイル読み込み時のダイアログでマクロを有効にしてください。「ファイル」メニューの「ヘッダにB1セルを挿入して印刷」を選べば、B1セルの内容を参照し、「月曜日データ」や「火曜日データ」というヘッダに変更し、印刷プレビュー画面を表示します。直接プリントアウトしたい場合は、マクロのコメントを見て変更してください。
マクロは完全に以下のWebページの切り張りです。一応動いていますが、参考に留めてください。マクロのセル内容の取得は以下。
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2Fcell#z21ca360
ヘッダ内容の変更は以下の「ヘッダおよびフッタの表示テキストの変更」。
http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Formatting_Spreadsheet_Documents
印刷部分は「マクロの記録」です。
VBAで記述すると †
M.Kamataki (2010-01-22 16:21:51 (金))
Excelでも「マクロで実現」というTipsがいくつかありました。以下はそのうちのひとつ。
特定のセルの値をヘッダーに指定するマクロ (Excel97,2000)
http://www.nurs.or.jp/~ppoy/access/excel/xlM001.html
このページのサンプルを以下のように変更するとCalcでも動きました。Option VBASupport 1 Sub MyPrint() With ActiveSheet.PageSetup .CenterHeader = Range("B1").Text + "曜日データ" End With ' ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut End SubVBAの印刷プレビューがCalcで実行できないのが残念ですが、Excelの情報もある程度、役立つと思います。
ありがとうございます †
匿名 (2010-01-26 12:26:36 (火))
非常に参考になりました。
追加質問 †
匿名 (2010-02-17 08:32:48 (水))
OOo.Basicの方で作成してうまくいったのですが、マクロで作成されるヘッダーのフォントサイズを大きくしたいのですが、どのように記述すれば良いのでしょうか?
すみませんがご教授願います。
OOoBasic の場合です †
ike@九州 (2010-02-17 11:34:29 (水))
Sub Main oDoc = ThisComponent oSheet = oDoc.getCurrentController.getActiveSheet sStyleName = oSheet.getPropertyValue( "PageStyle" ) oStyleFamilies = oDoc.getStyleFamilies() oPageStyles = oStyleFamilies.getByName( "PageStyles" ) If oPageStyles.hasByName( sStyleName ) Then oPageStyle = oPageStyles.getByName( sStyleName ) With oPageStyle 'ヘッダーをオン .HeaderOn = true '左右ページ設定を同じにする .HeaderIsShared = true ' oHeader = .LeftPageHeaderContent ' oHCtext = oHeader.CenterText ' oHLtext = oHeader.LeftText ' oHRtext = oHeader.RightText ' .LeftPageHeaderContent = oHeader '右側のページヘッダー設定取得 oHeader = .RightPageHeaderContent 'ヘッダーの中央のテキスト取得 oHCtext = oHeader.CenterText ' oHLtext = oHeader.LeftText ' oHRtext = oHeader.RightText '文字設定 oHCtext.string = oSheet.getCellRangebyName("B1").string 'テキストカーソル作成(マウスクリック同等) oTextCursor = oHCtext.createTextCursor() 'テキスト全て選択(マウスドラッグ選択同等) oTextCursor.gotoEnd(true) '英数字フォントサイズ oTextCursor.CharHeight = 12 '日本語フォントサイズ oTextCursor.CharHeightAsian = 12 '右側のページヘッダー設定適用する .RightPageHeaderContent = oHeader End With End If End Sub
左右ページ設定を同じ(.HeaderIsShared = true)にする場合は
右のページヘッダー設定のみで反映されるようです。(左は無視される)
ありがとうございます †
匿名 (2010-02-17 16:21:50 (水))
期待通りの動作になりました。
ありがとうございます。