• ベストアンサー

Excel出力後のExcelの起動について

Vb側からデータをExcelに出力し、その画面を表示させたまま 出力したExcelを確認しようと思ったところ、Excelは起動するものの シートが表示されない現象が起こりました。 出力後のExcelの終了(解放?)のロジックは下記の通りです。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add … … Sheetへの出力処理 … … Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing この現象の回避方法がありましたらご教授ください。 Windows2000 Vb6.0 SP5 Excel2000

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

  • ベストアンサー
回答No.5

多分、もう解決されているかと思いますが・・・。 簡単に実験してみました。 ステップ実行して、1ステップごとにExcelの状態を確認しました。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = New Excel.Application ↑影でこっそりExcelが起動している様子です。。。 xlApp.Visible = True ↑Excelがシート無しの灰色の状態で表示されます。 Set xlBook = xlApp.Workbooks.Add ↑テンプレのとおりのシートが作成されます。  (デフォルトだとBook1.xlsでシートが3枚) Set xlSheet = xlBook.Worksheets.Add ↑シートが1枚追加されます(いいのかな・・・) xlSheet.Range("A1").Value = "Test Data" ↑追加したシートのセルA1に"Test Data"が入力されます。 xlBook.SaveAs "test.xls" ↑デフォルトのパス上にtest.xlsが作成されます。 xlBook.Close ↑Excelがシート無しの灰色の状態に戻ります。 xlApp.Quit ↑Excelが終了します(Alt+Tabで表示されなくなります) Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing 1.上記を実行後、作成した"test.xls"を開くと、ちゃんと表示されました。。。 2.ためしにNothingを全部コメントにして実行しても、ちゃんと表示されました。 3."xlBook.Close"と"xlApp.Quit"だけをコメントにしたところ、Excel(test.xls)は表示されたままでした。 こんな感じでした。 私の場合、オバケが残る事象が出たら、面倒でもPCを再起動してからソースを修正し、再テストに臨みます。 何度ソースをいじってもオバケが解消されないとき、再起動したら直ったケースがあったので。。。 リンクはAccessに関してですが、Nothingについての考え方(?)が載ってます。 以上、ご参考まで。

参考URL:
http://www7.big.or.jp/~pinball/discus/access/91106.html

その他の回答 (4)

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.4

解決しましたか? Excelはプロセスとして利用するにしても、 隠れたままウィンドウを持つので、 >Set xlApp = Nothing >Set xlBook = Nothing >Set xlSheet = Nothing と書いてもプロセスに残ってしまうでしょう。 ウィンドウを表示させるならNo.1の方の通りですし、 処理してそのまま終わらせるなら、 作成したブックを保存(SaveAs)させて閉じて(Close)から、 Excelを終了(xlApp.Quit)させて下さい。 なお、いきなり終了(xlApp.Quit)させても、 手操作と同じで非保存ブックがあると警告が出て 停止してしまいます。 このような状態だとプロセスに EXCEL.EXEが残ってしまいます。

Lazio_ss
質問者

補足

ご指摘の通りブックを保存(SaveAs)させて閉じて(Close)から、Excelを終了(xlApp.Quit)させみましたがやはりワークシートのみ表示されません。xlSheet.Visible=Trueにしてみたりしてるんですがだめです。ほかに方法がありましたらよろしくお願いします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

saveAsや QUIT してます? Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing 順番的には、逆では?

回答No.2

Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing 以上の部分を以下に変えてはどうでしょうか? ちがってたらスイマセン・・・。 If Not xlBook Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) Set xlBook = Nothing End If If Not xlApp Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) Set xlApp = Nothing End If GC.Collect()

Lazio_ss
質問者

補足

どういった処理なんでしょうか? このままコピーしても処理を行なえません。 どうかご教授ください!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Set xlApp 後に xlApp.Visuble=Trueが必要なのでは。

Lazio_ss
質問者

補足

処理が完全に終了した後に処理の画面を開いたまま、 手動でExcelを表示させたいのです。 出力されたExcel以外の関係の無いExcelを開こうとしてもシートが表示されません。 画面を閉じると正常に表示されます。 VbのほうでExcelを正しく解放していないのではないかと考えているんですが…。 わかりづらく申し訳ございません。

関連するQ&A