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

締切り済みの質問

Excel2007のVBAでPreviewすると

初めまして。
Excel2007のVBAで困っていることがあり解決方法を探しています。
もともとExcel97で稼働していたマクロ+VBA付きのシートをExcel2007で稼働させようとしています。

マクロ・VBAで作成されたシート(sheet2)をフォームに配置した印刷ボタンをユーザーに押してもらうことでプレビューを表示します。

印刷ボタンを押したときのプレビューのコード

Worksheets("sheet2").PrintOut Copies:=1, Preview:=True

でプレビュー画面を表示したところ、印刷ボタンや印刷設定ボタン等の上部にあるボタンが薄いグレーの配色で押せなくなりました。

調べた結果、ScreenUpdatingがfalseだと同じ状態になるとわかったので
Application.ScreenUpdating = True
Worksheets("sheet2").PrintOut Copies:=1, Preview:=True
と書き換えましたが、不具合は解消されませんでした。

またブックを閉じずに、マクロを再起動させて同様の動作をおこなうと
何故かちゃんとボタンが押せるプレビューが表示します。
その状態のブックを保存して改めて開くと同じようにプレビューのボタンが押せなくなっています。

同じような現象で解決された方いらしたら解決方法を教えて頂ければありがたいです。
よろしくお願いいたします。

投稿日時 - 2009-06-18 12:32:23

QNo.5053838

すぐに回答ほしいです

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

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

回答(3)

ANo.3

こんばんは。

最初に、97なら、動くのかもしれませんが、Excel 2000 以上ですと、

Bookのオープン->ユーザーフォーム表示->ユーザーフォームに条件設定後、ボタン押下->VBAによるデータ抽出作業->プレビューの表示->//*ここで動かなくなります// --> 印刷設定後、印刷->終了メッセージの表示(msgbox)->Bookのクローズ

そのままで、// //の部分が、どうにも動かなくなります。それには気がつかれませんでしたか?
もし、そこの部分で気が付かないとすれば、その前の問題になりますが、私の#1 で書いた設定はそのままにしておいてください。前のままですと、ハングと同等の状態になりますから、後で分かります。

私は、掲示板デビューから97のコードはほとんど扱ったことがありませんので、分かりませんが、コードを見ないとなんともいえませんが、小出しに、チェックしていったほうがよいと思います。少し、コードの流れに不安を感じています。当時、ある流行った方法がありましたが、それを、上位バージョンで実現させようとしたら、最後辺りで、Excelのシステムが飛びます。

なお、97であっても、ユーザーフォームで、プレビュー画面の操作設定は無理があります。その前の作業でなくてはなりません。

VBAによるデータ抽出作業->

問題は、ここの部分ですが、何をされているのですか?AutoFilter あたりでしょうか。

まあ、下位バージョンのものを直すよりは、上位バージョンに対するものの方が楽だとは思いますが、たぶん、問題点の部分が違っているように思います。

まず、最初から、ブロックごとに点検していかないといけないかもしれません。ブックを開けてからの、アクティブ・ブックやアクティブ・シートの動きを見なければなりません。

投稿日時 - 2009-06-18 20:07:55

ANo.2

VBAは得意ではないのですが印刷プレビューは
Worksheets("sheet2").PrintPreview
では?

投稿日時 - 2009-06-18 16:00:16

お礼

アドバイスありがとうございます。
Worksheets("sheet2").PrintOut Copies:=1, Preview:=True

Worksheets("sheet2").PrintPreview
に変更しても状況は変わりませんでした。
また、別の解決方法がありましたらお願い致します。

投稿日時 - 2009-06-18 17:16:58

ANo.1

こんにちは。

>フォームに配置した
ユーザーフォームのことでしょうか。

一応、UserForm 前提とさせていただきます。
それから、プレビューのボタンというのは、UserForm上のCommandButton とします。

UserFormのコードとしては、少し問題があるかもしれませんが、直接の原因は、おそらく、UserForm から命令をシートから、プレビュー画面に行ったきりになってしまうからだと思います。
本来、その後、どうするか、という問題もあるはすです。

それで、Excel 97用のコードでは、UserForm には、Modal モードがありません。正しく動いていたのかは分からないのですが、

 UserForm のプロパティのShowModal を、False にするか、
 UserForm 起動時に、UserForm1.Show 0 としてあげれば、

プレビュー画面に替わっても、直接プレビュー画面を操作できるはずです。印刷するにしても、元に戻るにしても、直接、マニュアルでプレビュー画面を操作してください。

投稿日時 - 2009-06-18 15:01:07

補足

アドバイスありがとうございます。
・UserFormのプロパティのShowModalをFalse
・UserForm起動時に、UserForm1.Show 0
を行いましたが、いずれも期待通りの動きにはなりませんでした。

通常動作(Excel97での動き)
Bookのオープン->ユーザーフォーム表示->ユーザーフォームに条件設定後、ボタン押下->VBAによるデータ抽出作業->プレビューの表示->印刷設定後、印刷->終了メッセージの表示(msgbox)->Bookのクローズ

上記アドバイスを適用後の動作
Bookのオープン->VBAによるデータ抽出作業->該当データなしのメッセージ表示->Bookのクローズ
となってしまい、肝心のフォームが表示されませんでした。

おそらくロジックの組み方が悪いとは思いますが、なにぶん作成者は退職、ドキュメント類もなく・・・・ 悪戦苦闘中です。

投稿日時 - 2009-06-18 17:17:35

あなたにオススメの質問