dポイントプレゼントキャンペーン実施中!

エクセルの最終ページだけを自動印刷するには、どうしたらいいのでしょうか?マクロVBAを使い、エクセルシートが、何ページにわたって印刷されるのか判定し、その最終ページだけを印刷したいのです。
目的は、エクセルの表の最終行に新しいレコードを追加して行ってるのですが。手作業ですといちいちプレビューして何ページにまたがってるか確認して、そのページ番号を指定せねばなりません。その最終ページだけ印刷したいことがよくあるので、マクロで自動化したいのです。

A 回答 (3件)

Sub test02()


d = Worksheets("Sheet1").Range("a65536").End(xlUp).Row
MsgBox d
'MsgBox Worksheets("Sheet1").HPageBreaks.Count
n = Worksheets("Sheet1").HPageBreaks.Count
f = Worksheets("Sheet1").HPageBreaks(n).Location.Row
Worksheets("Sheet1").Range("A" & f & ":G" & d).PrintOut
End Sub
でどうですか。
---
HPageBreakだけを問題にしてます。
また最右列はH列と仮定してます。
c=Worksheets("Sheet1").Range("IV1").End(xloLeft).Row
で求められるかも
    • good
    • 0
この回答へのお礼

ありがとうございました。すばらしいアイディアありがとうございます。
組み込んで使わせて頂きました。
表示画面と印刷画面で、シートの選択、不要な列の非表示やフォントの設定など、いろんなことを同時にVBAで行なっていますので、アドヴァイスいただいたものを組み込むのにずいぶん日数がかかってしまいました。
私は、VBAそれほど詳しくないので、3人の方のを組み込んでとにかく使ってみました。
とてもすばらしいと思います。ただ、残念だったのが、最終ページでなくセル範囲の印刷になっていますので、ヘッダー部分のページ数が、常に1/1になってしまいました。
簡単な修正で直るのでしょうが、今の私には、まだ、そのやり方がわからない状態です。

お礼日時:2007/11/11 18:06

こんばんは。



ちょっと難しいですね。

データの広さとか決められてはいないので、列数を決めないと、これはできません。
データの行は、A列で決めています。しかし、列数は、任意のことが多いので、手動で、

Const RETU As Integer = 10 の10 の部分を任意で入れてください。

使用しているデータの大きさということで、UsedRange などを使うと、あらぬ場所にまで行ってしまいます。

なお、Ver4 マクロ関数を使う理由は、VBA方式ですと、実際に、使っていると、画面の変更の際に、すべてがリセットさせられることがあるからです。


Sub Test()
Dim i As Long
'A列を起点としています。その後の列数を決めてください。
Const RETU As Integer = 10
With ActiveSheet
 If .UsedRange.Cells.Count < 2 Then
   MsgBox "シートが空か、ひとつのデータしかありません。", 64
   Exit Sub
 End If
 .PageSetup.PrintArea = .Range("A1", .Range("A65536").End(xlUp)).Resize(, RETU).Address
  i = ExecuteExcel4Macro("GET.DOCUMENT(50)")
  .PrintOut From:=i, To:=i, Preview:=True
  '.PrintOut From:=i - 1, To:=i, Preview:=True '最後のひとつ前のページを含める
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
列数は、固定なのであまり気にならず、使えています。
VBAでなくエクセル4のマクロというのが、あまり詳しくないのでよくわかりませんが、3人の方のを試してみて、今のところWendy02さんのを使わせていただいております。

お礼日時:2007/11/11 18:11

印刷ページ数はVBAの機能では取得できない情報なので、旧マクロ(Excel 4 マクロ)の機能を利用します。



Msgbox Application.ExecuteExcel4Macro("get.document(50)")

http://support.microsoft.com/kb/402754/ja
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2007/11/11 17:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!