質問: excel2010 vbaにて印刷設定の取得 excel2010 vbaにてマクロを作成しております。 excel2010のメインウィンドウの「ファイル」タブ→「印刷」の 画面におきまして、[設定]欄にて設定したページ指定(印刷開始ページ及び 印刷終了ページ)は取得できるのでしょうか? workbook_beforeprintプロシージャにて取得しようと思っているのですが、 activesheet.pagesetupのメンバやthisworkbookのメンバを見たところ、 印刷の開始ページ及び終了ページの設定が見つかりませんでした。 印刷のページ指定の設定箇所をご存知の方がいらっしゃいましたら 教えて頂きたく宜しくお願い致します。
回答: 直接の回答とは言えないことをまずはお詫びしつつ。 私の頭の中には 「全頁の上端・下端に“同じモノ”を印刷する」 という事がヘッダー・フッターの意義である、というモノがありますので (当然、ページ番号などの可変部分は除きます)、 質問者さまの > 別シートに記述の「ページごとのヘッダー値」 と言う考え方にはなかなか賛同できずにいます。 具体的に「ヘッダーフッターの位置にどのように印刷したいのか」がわかれば、 なんとなくでも策が見いだせるかもしれません。 例えば、 「奇数ページは右端にヘッダーフッターを、偶数ページは左端に」 と言うのであれば、2007以降「奇数/偶数ページ別指定」というオプションが付きましたので 単純にこの機能を使ってやれば済みます。 潰れて見辛いかもしれませんが、 「ページ設定」の中、「奇数/偶数ページ別指定」にチェックを入れ、 「ヘッダー(フッター)の編集」をクリックすると、 「奇数ページ/偶数ページのヘッダー(フッター)」のタブが現れますので、 これで別々に設定してやります。 ちなみにvbaで記述する際は sub odd_even_header_footer() application.printcommunication = false with activesheet.pagesetup ' 奇数ページのヘッダー/フッター .leftheader = "" .centerheader = "" .rightheader = "" .leftfooter = "" .centerfooter = "" .rightfooter = "奇数" ' 奇数/偶数ページ別on .oddandevenpagesheaderfooter = true '偶数ページのヘッダー/フッター .evenpage.leftheader.text = "" .evenpage.centerheader.text = "" .evenpage.rightheader.text = "" .evenpage.leftfooter.text = "偶数" .evenpage.centerfooter.text = "" .evenpage.rightfooter.text = "" end with application.printcommunication = true end sub こんな感じのようです。 いや、そうじゃない。本当に「ページ別に変えたいんだ」というのであれば、 回答として「エクセルにはその機能は無いはずです」と言うものを提示させていただきます。 前述の通り、それは「ヘッダー/フッターの考え方と若干ずれている」からです。 強引にコレを実現するなら ※例えば1行目から100行目で10行ごとに改ページなら まずは印刷範囲を指定して、 以下10行ごとに ・印刷範囲を指定 ・ヘッダー/フッターを設定 ・印刷 を繰り返すようなイメージになるのではないかなぁ、と思います。 以上、何かの参考までにお納めくださいませ。