• ベストアンサー

エクセルVBAで、非表示にしたエクセルが印刷後に表示されてしまう

Excel97を使用しています。 ブックを開いた時に、Application.Visible = Falseでエクセルを非表示にしてから、ユーザーフォームだけ表示させる設定にしています。 このユーザーフォーム上のボタンで印刷をするのですが、印刷が終了すると、ユーザーフォームの後ろにブックが表示されてしまいます(タイトルバーだけの時もあります)。 しかもユーザーフォームがまだ表示されているのに、エクセルの「閉じる」ボタンが有効になってしまいます。 印刷のコードの前や後ろにもApplication.Visible = Falseを書いてみたのですがうまくいきません。 ブックを常に非表示にしておくにはどうしたらよろしいでしょうか? ご存知の方、どうぞよろしくお願いします。

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

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

表示領域をデスクトップの範囲外に移動するという方法はいかがですか? やったことはないので自信なしです。 頑張ってくださいヽ(^。^)ノ

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 デスクトップの範囲外に移動とは考え付きませんでした(゜o゜) やってみましたらうまく行きました! また、ここで「バグでモードレスになるのを防止」という項目がありましたのでこれも使ってみました。 http://homepage2.nifty.com/kmado/kvba.htm またわからないことがありましたらよろしくお願いします。

その他の回答 (1)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

質問のコードでOKだと思うのですが、97がないので何とも言えませぬ。 で、一案。 エクセルウィンドウとUserformのサイズを同じにしたらどうでしょうか。 そうすれば質問のような現象が発生してもOKですよね。 それから、Userformはモーダルですよね。  

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 #1さんの方法でうまくいきました。 ユーザーフォームと同じ大きさに…これも思いつきませんでした…。また次の機会に使わせていただきますね。 > Userformはモーダルですよね。 モーダルなのですが、97だと組み込みダイアログを表示させた後はモードレスになってしまう、というバグがあるそうです。 その部分はこれで解決できました。 「バグでモードレスになるのを防止」 http://homepage2.nifty.com/kmado/kvba.htm またわからないことがありましたらよろしくお願いします。

関連するQ&A

  • ExcelのVBAでフォームだけ表示させる方法

    はじめまして。 UserForm1で、デジタルで時間を表示する(デジタル時計)を作成しています。 Excelのアプリケーションを表示せず、フォームのみ表示させたいので、 Application.Visible = Falseとしたいのですが、この方法だと、他のExcel ファイルを起動する際に、Excelが見えなくなってしまいます。 ■やりたいこと ・Excelファイルが1つも開かれていない場合、Excelを非表示にして  Userform1のみ表示されている状態で起動する ・Userform1のみ表示している状態で、他のBooKを開いた場合、  Excelを表示して開いたBookを表示させる ・他のBooKを開いている状態で、Userform1が記述されているBook  を開いた場合、ExcelもUserform1も表示させる ・他のBookを閉じるて、Userform1が記述されているBookのみになった  場合、Excelを非表示にしてUserfrom1のみ表示されている状態にする 自分自身(Userform1を記述しているBook)のみ起動している時には、 Application.Visible=falseにすれば良いのだと思いますが、どういうロジック を組めば良いかご教授いただければ幸いです。 すみませんが、よろしくお願い致します。 それ以外の時は

  • Excel VBA 自身を非表示にした時の解除方法

    Excel2010でVBAのコードデバッグ中に Excelアプリケーションのウインドウの中に Excelブック(シート)が表示されなくなってしまったため 一度、Excelアプリケーションを終了して 再びデバッグ中のExcelブックを開いたのですが それでも Excelアプリケーションのウインドウだけが表示されて、 開きたいExcelブック(シート)は表示されません。 おそらく、VBAのコードの中の Set wb = Workbooks.Open(fileName:=filePass, ReadOnly:=True) ActiveWindow.Visible = False の ActiveWindow.Visible = False のコードが 自分自身を非表示にしてしまったのではないかと思われます。 イミディエイトウィンドウに ActiveWindow.Visible = True と入力してもウインドウが表示されていないので エラーになります。 どのようにすれば非表示の状態から 表示の状態に戻すことができるのでしょうか。

  • Excel VBAでユーザーフォームだけ表示したい

    Excel VBAでユーザーフォームを作成し、ファイルを起動時にSheetを非表示にしてユーザーフォームのみ表示させるようにしました。 そうしたところ、 (1)実行ボタンをクリックすると作成されるExcelファイルも表示されなくなる (2)終了ボタンをクリックするとユーザーフォームを含むExcelファイルだけが閉じるのではなく、Excelのアプリ自体が終了してしまう(実行ボタンで作成したExcelファイルは表示したままにしたいのに閉じてしまう) という現象になってしまいました。 某書籍を参考にしてコードを書いたのですが、なぜかこのようになってしまいました。 ※「★」が書籍に指示があった箇所です。 <ThisWorkbook> Private Sub Workbook_Open() Application.Visible = False '★ myForm.Show '★ myForm.MultiPage1.Value = 0 'マルチページ構成のため End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) '========== [×]ボタン,[Alt]+[F4]キーを無効にする ========== Dim msg As String, title As String msg = "[画面を閉じて終了する]ボタンから終了してください。" title = "終了方法" Dim res As Integer Select Case CloseMode Case vbFormControlMenu res = MsgBox(msg, vbOKOnly + vbCritical, title) Cancel = True End Select ActiveWorkbook.Save '★ Application.Visible = True '★ Application.Quit '★ End Sub 実行したいのは、 (1)ユーザーフォームを含むExcelファイルを起動したときは、起動時にユーザーフォームだけが表示されるようにしたい  ※ワークシートを非表示としたい (2)「実行」ボタンをクリックすると、プログラムが実行されExcelファイルが新規で作成され表示される  ※上記で記載した「★」の部分をコードをコメントアウトしてユーザーフォームから実行ボタンをクリックすると、プログラムが実行され正常にExcelファイルが新規で作成されることは確認済みです。 (3)ユーザーフォームが閉じても、ユーザーフォームのExcelファイルのみ閉じ、新規で作成されたExcelファイルは閉じない。  ※実行ボタンをクリックして新規ファイルを作成しなかったり、他にExcelファイルがなかった場合は、Excelは終了する。 それとあわせて、 (1)を実行できた場合に、再度コードを編集する時はどうしたらExcelの画面が表示できるのか教えて下さい。  ※それとも表示できないのでしょうか? 作成締め切りが迫っていて焦っています。 お知恵のある方どうかお力添え下さい。 よろしくお願い致します。

  • Excel 2000:ブックのタイトルバーを表示させたくない

    ネット上のExcel文書をダウンロードした直後から、おかしくなってしまいました。 以前は表示されていなかったブックのタイトルバーが常に表示されるようになってしまいました。いくらブックの最大化ボタンを押してもブックのタイトルバーが表示されます。タイトルバーはアプリケーション(Excel)とブックの2本が表示されています。 何とかブックのタイトルバーを取り去ることができませんでしょうか? ◇バージョン:Excel 2000 (9.0.4402 SR-1)

  • Excel VBAで別のブックからユーザーフォームの閉じる

    Excel VBAで別のブックからユーザーフォームの閉じたいのですが うまくいきません。 教えてください。 Private Sub CommandButton2_Click() Application.Visible = False Unload Workbook.("材料リスクマップ検索Ver2.xls")UserForm3・・・・※ Workbooks.Close userform3:=ThisWorkbook.Path & "あああ.xls" Workbooks("\いいい.xls").Close savechanges:=False UserForm1.Show vbModeless End Sub ※印のところが赤字にかわります。 コマンドボタン2は、いいい.xlsにあり、フォームを閉じたいのはあああ.xlsのUserform3です。 その後、ファイル名いいい.xlsは閉じます。 コードが間違っているかと思いますが、どんな風にすればよいかわかりません。初歩的なこととは思いますがよろしくお願い致します。

  • エクセルの開き方の問題

    フォームをデスクトップに常駐させ、Application.visible = False でブックを見えなくしているマクロを作ったのですが、 別のエクセルファイルを開こうとするとそのブックまで非表示になってしまい実用性のないものになってしまいました。 別にエクセルを立ち上げ、ファイルメニューから開くにするとその問題は解決されるのですが、いつもそうするのは大変なので他の解決方法を探しています。 何かいいアイディアはないでしょうか。 よろしくお願いします。

  • エクセル VBA エクセルの表示について

    下記のプロシージャを実行し、Userform1のみ表示したじょうたいで、他のエクセルファイルを開くとエクセルが表示されません。他のエクセルファイルを開いた時に、エクセルが自動で表示されるような対処法を教えてください。どうかよろしくお願いします。 Private Sub Workbook_Open() Application.Visible = False UserForm1.Show End Sub

  • エクセルVBAでグラフ表示

    エクセル2002使用です。 ユーザーフォームを作り、そこにコマンドボタンを置いています。コマンドボタンをクリックすると、ワークシート上にあるグラフを表示したいのですが・・・ Private Sub CommandButton1_Click() Charts("Graph4").Select Charts("Graph4").Activate End Sub 問題が2つ出てしまいました。 1.ワークブック内でシートは切り替わるのですが、グラフがユーザーフォームの後ろに隠れてしまったままでユーザーフォームの手前に表示できない。 2.グラフ(シート)を表示した後、ユーザーフォームに戻る方法がわからない。 ユーザーフォームからシートにあるグラフを表示させたい場合は、どのような方法がベストなのでしょうか?できれば、ユーザーフォーム上ですべてを行いたいのですが、グラフ作成のコードも新たに作らないと駄目なのでしょうか? 質問の仕方も難しく説明不足かもしれませんが、よろしくお願いします。

  • 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 と書き換えましたが、不具合は解消されませんでした。 またブックを閉じずに、マクロを再起動させて同様の動作をおこなうと 何故かちゃんとボタンが押せるプレビューが表示します。 その状態のブックを保存して改めて開くと同じようにプレビューのボタンが押せなくなっています。 同じような現象で解決された方いらしたら解決方法を教えて頂ければありがたいです。 よろしくお願いいたします。

  • エクセル VBAについて

    Private Sub Workbook_Open() プロシージャーにてapplication.visible=falseを記述し、Userformのみ表示している状態で、違うエクセルファイルを開くと、表示されません。違うエクセルファイルを開いた時に自動でエクセルが表示できるような対象法を教えてください。お願いします。

専門家に質問してみよう