
Excel2010 VBAにてマクロを作成しております。
Excel2010のメインウィンドウの「ファイル」タブ→「印刷」の
画面におきまして、[設定]欄にて設定したページ指定(印刷開始ページ及び
印刷終了ページ)は取得できるのでしょうか?
Workbook_BeforePrintプロシージャにて取得しようと思っているのですが、
ActiveSheet.PageSetupのメンバやThisWorkbookのメンバを見たところ、
印刷の開始ページ及び終了ページの設定が見つかりませんでした。
印刷のページ指定の設定箇所をご存知の方がいらっしゃいましたら
教えて頂きたく宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
直接の回答とは言えないことをまずはお詫びしつつ。
私の頭の中には
「全頁の上端・下端に“同じモノ”を印刷する」
という事がヘッダー・フッターの意義である、というモノがありますので
(当然、ページ番号などの可変部分は除きます)、
質問者さまの
> 別シートに記述の「ページごとのヘッダー値」
と言う考え方にはなかなか賛同できずにいます。
具体的に「ヘッダーフッターの位置にどのように印刷したいのか」がわかれば、
なんとなくでも策が見いだせるかもしれません。
例えば、
「奇数ページは右端にヘッダーフッターを、偶数ページは左端に」
と言うのであれば、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行ごとに
・印刷範囲を指定
・ヘッダー/フッターを設定
・印刷
を繰り返すようなイメージになるのではないかなぁ、と思います。
以上、何かの参考までにお納めくださいませ。

ご回答ありがとうございました。
> 直接の回答とは言えないことをまずはお詫びしつつ。
ご丁寧にありがとうございます。
こちらこそご回答を頂きながらお礼が遅くなりまして申し訳ありません。
> 私の頭の中には
> 「全頁の上端・下端に“同じモノ”を印刷する」
> という事がヘッダー・フッターの意義である、というモノがありますので
> (当然、ページ番号などの可変部分は除きます)、
> 質問者さまの
>> 別シートに記述の「ページごとのヘッダー値」
> と言う考え方にはなかなか賛同できずにいます。
>
> 具体的に「ヘッダーフッターの位置にどのように印刷したいのか」がわかれば、
> なんとなくでも策が見いだせるかもしれません。
tsubuyuki様の仰るのもごもっともです。
ヘッダー・フッターは同じものを印刷すると理解しているのですが、
ページ番号などの可変部分は使用できるので、同じように可変に
できないものかと思ってしまっています。
具体的には1枚のシートに月報を作っておりまして、月ごとに
改ページを行っております。
4ページ目:2013年4月
5ページ目:2013年5月
6ページ目:2013年6月
~
13ページ目:2014年1月
14ページ目:2014年2月
15ページ目:2014年3月
※先頭ページ番号を4に設定
最初の質問の仰々しさからすると大した内容ではない
ヘッダー・フッターなのですが、ヘッダーとフッターには
ヘッダー:yyyy年m月 月報
フッター:月ごとの注意事項
を印刷しようと考えております。
ExcelVBAでの記述は
Workbook_BeforePrintで
印刷ページ分ループ内にて
ActiveSheet.PageSetup.CenterHeader =
StrConv(CStr(Format(DateSerial("2013", ページ番号, "1"), "yyyy年m月")), vbWide)
と設定して1枚ずつ印刷を実行するイメージです。
> 例えば、
> 「奇数ページは右端にヘッダーフッターを、偶数ページは左端に」
> と言うのであれば、2007以降「奇数/偶数ページ別指定」というオプションが付きましたので
> 単純にこの機能を使ってやれば済みます。
>
> ....
> こんな感じのようです。
このような機能もあるのですね。
今回は奇数/偶数ページでは分けられないので利用させて頂くことは
できないようですが、よい知識を得ることができました。
ありがとうございます。
> いや、そうじゃない。本当に「ページ別に変えたいんだ」というのであれば、
> 回答として「エクセルにはその機能は無いはずです」と言うものを提示させていただきます。
> 前述の通り、それは「ヘッダー/フッターの考え方と若干ずれている」からです。
>
> 強引にコレを実現するなら
> ※例えば1行目から100行目で10行ごとに改ページなら
> まずは印刷範囲を指定して、
> 以下10行ごとに
> ・印刷範囲を指定
> ・ヘッダー/フッターを設定
> ・印刷
> を繰り返すようなイメージになるのではないかなぁ、と思います。
>
>
> 以上、何かの参考までにお納めくださいませ。
先ほどのヘッダーフッターの奇数/偶数ページ別指定のように
Excelとしてヘッダーフッターの機能として沿っているものは
ついているわけで。Win32APIのOpenPrinter・GetPrinterを使用して、
DEVMODEやPRINTER_INFOなどを取得してみましたが、どこにも
印刷開始ページ、終了ページの情報はありませんでした。
tsubuyuki様の仰るように僕の行おうとしていることは
ヘッダーフッターの考え方からずれているのかと思われます。
やはりシートに記述する内容なのもしれません。

No.1
- 回答日時:
こんにちは。
取得する目的は?
取得ってできるのかな?
設定は、PrintPutメソッドに引数があるのでできます。
早々とご回答ありがとうございます。
目的としましては以下のように印刷時に
別シートに記述してあるページごとのヘッダー、
フッターの内容に入れ替えようと思っております。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
※取得できるなら「ファイル」タブ→「印刷」にて
指定したページ番号ループにしたい
For i = 開始ページ To 終了ページ
With ActiveSheet
With .PageSetup
.CenterHeader = 別シートに記述のページごとのヘッダー値
.CenterFooter = 別シートに記述のページごとのフッター値
End With
.PrintOut 1ページずつ
End With
Next
End Sub
取得できないようでしたら、印刷用のボタンと
開始ページ、終了ページを設定するシートを作成して
そこから行うことになるのかなと思っております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Renta !全タテコミ作品第1話無料配信!!
縦スクロール&フルカラーマンガ特集!
-
マクロを使って両面 部数設定をして印刷したい
Word(ワード)
-
EXCEL、マクロ-改ページ行番号の取得方法を教えてください
Visual Basic(VBA)
-
VBAでファイルパスが長すぎてコピー時のエラー対策
Excel(エクセル)
-
4
エクセルVBAでプリンタプロパティを操作したい
Visual Basic(VBA)
-
5
Excelのヘッダー表示を変数で指定する場合
Excel(エクセル)
-
6
APIを使用した印刷
Visual Basic(VBA)
-
7
Sub ***( ) と Private Sub ***( ) の違い
Visual Basic(VBA)
-
8
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
9
Excel シートのコピーの際、ページ設定が保持されない
Excel(エクセル)
-
10
VBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー
Excel(エクセル)
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
13
(Excel)マクロで複数シートをPDFとして保存するにはどうすれば良いですか?
Excel(エクセル)
-
14
Excel VBA の印刷後の判定
Excel(エクセル)
-
15
ファイル名を今日の日付、時刻で保存する
Visual Basic(VBA)
-
16
excel VBAで、プリンターの印刷余白及び用紙サイズを取得するには
Visual Basic(VBA)
-
17
Excel VBAでCheckboxの名前を変数にとって値を調べたい
Visual Basic(VBA)
-
18
Application.Dialogs(xlDialogSaveAs)でキャンセルの取得
Access(アクセス)
-
19
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
20
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
関連するQ&A
- 1 Excel VBAにて登録したマクロの印刷方法について
- 2 Excel VBA 印刷設定/ヘッダー、フッターの設定
- 3 Excel2003 VBAにて条件付き書式のマクロを書きたいのですが、
- 4 Excelの一括印刷で通し番号をつけるVBAマクロ
- 5 EXCEL2000のマクロ(ADO)にてCSVデータ取得しようとしたら
- 6 excelマクロでセル値をフッターに設定&印刷
- 7 Excel 2003のVBAマクロデータをExcel 2007で見たい
- 8 アクセス2010 マクロ 印刷ダイアログを表示
- 9 Excel VBA 指定した印刷範囲を印刷
- 10 EXCEL VBA シートの連続印刷に白黒印刷
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Excelで連番(ナンバリング)印刷
-
5
Excel 印刷サイズに合わせてセ...
-
6
Excelで印刷!集計行をすべての...
-
7
エクセルで長い行を1枚に印刷し...
-
8
【Excel】印刷範囲を1ペ...
-
9
エクセル2013で1ページ目と2ペ...
-
10
エクセルの表がプレビューで見...
-
11
ワードからPDF作成したら文字色...
-
12
ワードに「URL」を貼り付けると...
-
13
ワードの文章を左右に分けるには
-
14
googleマップを半径表示させる...
-
15
課題で、Wordを使って提出する...
-
16
WORD ある縦線が消せない
-
17
印刷用紙の中央に点線をいれた...
-
18
ヘッダーとフッターがクリック...
-
19
初めの1文字分空けると2行目...
-
20
改行すると一段、間が開いてし...
おすすめ情報
公式facebook
公式twitter