こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL200の印刷プレビューについて

OSはWindows2000の環境です。
EXCEL2000を使用しています。

EXCELで、印刷プレビューをした時に作業しているページを最初に表示することはできますか?
WORDでは、作業しているページが表示するのですが、EXCELでは1ページ目が表示します。

1つのシートにデータが2000行ほどあります。
作業としては、データが増えていくので、自分で指定したページが最初に表示するようになるといいのです。

いちお、印刷範囲設定をすればなるのですが、
もっと簡単になる方法があればうれしいのです。

よろしくお願いします。

投稿日時 - 2005-05-17 16:24:38

QNo.1393217

暇なときに回答ください

質問者が選んだベストアンサー

   No2.の続き//

//登録の仕方//
Alt+F11 を押すと、画面が切り替わります。
(もう一度、押すと、元の画面に戻ります)

左側に、プロジェクトという窓があり、「ThisWorkBook」という名称が出ているはずです。それを、ダブルクリックすると、白い画面が出てきます。
(Excelのウィンドウの一番上には、Microsoft Visual Basic ブック名-[ThisWorkbook(コード)]と出ているはずです)

そうしたら、真中の白い画面に、以下を貼り付けます。
貼り付けたら、元の画面に戻って、保存終了します。次に、そのブックを開けると、印刷プレビューその機能は変わっているはずです。

'------------------------------------------------------
'<ThisWorkbook>
Option Explicit
Public WithEvents myBtn As CommandBarButton
Private Sub myBtn_Click(ByVal Ctrl As Office.CommandBarButton, _
             CancelDefault As Boolean)
'DateTime : 05/05/18 13:50
'Author : Wendy02 in Goo No.1393217
 Dim ActiveRowNum As Long
 Dim myPrintArea As String
 Dim PageNum As Integer
 Dim OnePage As Integer
 Dim ActivePage As Integer
 Dim LimtPageRow As Long
 '
 If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub
 With ActiveSheet
 ActiveRowNum = ActiveCell.Row
 If .PageSetup.PrintArea <> "" Then
  myPrintArea = .PageSetup.PrintArea
  Else
  .PageSetup.PrintArea = Range("A1", ActiveCell).Address
  myPrintArea = .PageSetup.PrintArea
 End If
 '
 LimtPageRow = Range(myPrintArea).Offset(Range(myPrintArea).Rows.Count _
 - 1).Row
 PageNum = ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(64))")
 OnePage = Application.ExecuteExcel4Macro( _
   "INDEX(GET.DOCUMENT(64),1," & 1 & ")")
 If ActiveRowNum < OnePage Then
  ActivePage = 1
  Else
  If ActiveRowNum <= LimtPageRow Then
  ActivePage = Application.ExecuteExcel4Macro( _
   "MATCH(" & ActiveRowNum & ",GET.DOCUMENT(64),1 )") + 1
  Else
  ActivePage = PageNum
  End If
 End If
 .PrintOut From:=ActivePage, to:=ActivePage, Preview:=True
 End With
 CancelDefault = True
End Sub
'
Private Sub Workbook_Open()
 Set myBtn = Application.CommandBars.FindControl(, 109)
End Sub

'------------------------------------------------------

投稿日時 - 2005-05-18 14:08:57

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

2003tenn様

まず、ご質問から。
>すべてを印刷することも可能ですか?
それは、そのページのみを表示することであって、ユーザー設定済みの印刷範囲は変更をしていません。

もし、印刷範囲がクリアされた状態ですと、印刷範囲は、カーソルの置いてあるセルまでが、印刷範囲となります。

逆に、印刷範囲とカーソルでは、印刷範囲が優先されてしまいますので、もしも、印刷範囲よりも、先にカーソルを置くと、印刷範囲の最終ページしか出てきません。

もしも、新たに印刷範囲を越えたデータを加えた場合は、
メニューのファイル-[印刷範囲]-[印刷範囲のクリア]で、一旦、範囲を解除して、再び、印刷プレビューをクリックすれば、その範囲までが、印刷範囲となります。

>通常の印刷プレビューも出来るのでしょうか?

印刷プレビューボタンのみに作用しています。もし、全体のプレビューをご覧になりたいときは、

メニューのファイル-[印刷]-[印刷プレビュー]を選ぶと、その全てが最初から見られます。

今回のままの設定は、登録したブックにしか適用できません。

一旦、次の書き込みの説明のように設定すれば、後は、再び、そのブックを開ければ、そのまま使えます。

今回のマクロは、何度か試験してみましたが、2000行の先にあるページでも、時間的なストレスを感じません。ただ、専門的になりますが、クラス設定させるようなレベルのマクロやアドインとの競合や、オートメーション・オブジェクトとしてExcelを使用する場合については考慮されていません。

そのブックを開けたまま、他のブックに対しては、印刷プレビューボタンを押しても、そのページだけ表示するという機能は働かないようにしてあります。

全ての新規ブックまで適用するのは、個人用マクロブックの登録をしますが、設定する場所を換えたりしますので、内容を変えないといけません。(現在のところ、そこまで考えていません。)

//次のNoに続く

投稿日時 - 2005-05-18 14:05:20

お礼

お礼が遅くなりましたm(__)m
操作してみました。
私の希望通りになりました。
とても助かります。
ありがとうございました。

投稿日時 - 2005-05-22 00:43:34

ANo.1

>いちお、印刷範囲設定をすればなるのですが、
>もっと簡単になる方法があればうれしいのです。

VBAでの設定でしかないはずです。

今、試作で作った段階では、プレビューで、アクティブセルのページをプレビューすることは出来ます。ただし、現在の試作段階では、縦方向の行に対する改ページしか数えません。また、そのまま印刷しようとすれば、そのページのみになってしまいます。

もう少し、チェックする必要はありますが、それでも、良ければ、公開します。

投稿日時 - 2005-05-17 18:26:16

お礼

早速の回答ありがとうございます。
公開お願いしますm(__)m

データが縦方向なので、横方向の改ページに対応してなくても大丈夫です。
更に、そのままの印刷でそのページのみになるのは、逆にうれしいことです。ありがとうございます。

ひとつ質問があります。
すべてを印刷することも可能ですか?
通常の印刷プレビューも出来るのでしょうか?
VBAの操作の指導もよろしくお願いします。

投稿日時 - 2005-05-18 10:06:30

あなたにオススメの質問