[[20180228131126]] 『Excelのマクロで自動更新の目次を作りたい』(マクロ初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Excelのマクロで自動更新の目次を作りたい』(マクロ初心者)

Excelに以下のような目次があり、
ページ部分を自動更新にしたいです。


1章   ……… 1p
 1節  ……… 2p
  1.1 ……… 2p
2章   ……… 2p
 1節  ……… 3p

※制約としてWordではなくExcelであること、
 章や節毎のシート分けは不可。
 すべて1シート内で作成しなくてはなりません。

「名前の定義(名前の管理?)」を設定する方法ならうまくいきそうだったのですが、
システムからExcelを出力する関係で、この方法が使えないことが判明しました。

やはりマクロしかないのか…といろいろ調べてみたのですが、

検索してみても
GET.DOCUMENT(64)を使用して印刷時の総ページ数を取得する方法はわかったのですが
あるセルの現在のページ番号がなんであるか(例えば目次の2章のセルが何ページ目にあたるか)を取得する方法が見つからず、
手詰まり状態です。

これまでマクロを作成した経験もないので、
できれば作成方法を詳細に知りたいです。

どうかよろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 もし、
 >目次の2章のセル
 の行位置を知る方法があるのであり、ページは縦のみであれば名前定義で
 =GET.DOCUMENT(64)+NOW()*0
 に名前を付け(例としてページ)
 =IFERROR(MATCH(対象セルの行位置,ページ,1),0)+1
 ではどうか。
(ねむねむ) 2018/02/28(水) 13:30

ねむねむ様、ご回答ありがとうございます。

名前定義ですが、先に書いた通りこの名前定義の方法自体使えないのです…。

詳細をお話ししますと、
このExcelをあるシステムからphpExcelを使用して出力しようとしているのですが、
どうやらこのphpExcelが名前定義に対応していないらしく
名前定義に設定した情報がファイル出力時にはまっさらに消えてしまっているのです。
(マクロなら消えないようなのですが…。名前定義だけは別物扱いのようです。)

ただ、目次にある各章の位置は固定で、行の幅のみ変動するので
マクロのほうでなんとかならないかと考えた次第です。
(マクロ初心者) 2018/02/28(水) 13:47


 各ページの行数を統一できませんかね?行の非表示も駆使して行数が最大のページに合せる
 んで右端にページ番号用の列を挿入(非表示にするか文字の色を白にすれば見えません)
 そのセルに

 =INT(ROW()/1ページ当たりの行数)

 でも入れてその行が何ページ目かを表示させる
 で、目次のページ番号を表示させるセルに

 =VLOOKUP("1章*",A:右端の列,右端の列番,FALSE) & "P"
 =VLOOKUP("1節*",A:右端の列,右端の列番,FALSE) & "P"

 とか。章や節がどんな記入のされかたをしてるかわかんないんで、このへんは変わると思いますが。
 単純に右端にページ番号でもいいんですけど、あとで変更があったとき面倒ですし・・・

(774) 2018/02/28(水) 15:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.