
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/911 …

No.4
- 回答日時:
解決しましたか?
Excelはプロセスとして利用するにしても、
隠れたままウィンドウを持つので、
>Set xlApp = Nothing
>Set xlBook = Nothing
>Set xlSheet = Nothing
と書いてもプロセスに残ってしまうでしょう。
ウィンドウを表示させるならNo.1の方の通りですし、
処理してそのまま終わらせるなら、
作成したブックを保存(SaveAs)させて閉じて(Close)から、
Excelを終了(xlApp.Quit)させて下さい。
なお、いきなり終了(xlApp.Quit)させても、
手操作と同じで非保存ブックがあると警告が出て
停止してしまいます。
このような状態だとプロセスに
EXCEL.EXEが残ってしまいます。
この回答への補足
ご指摘の通りブックを保存(SaveAs)させて閉じて(Close)から、Excelを終了(xlApp.Quit)させみましたがやはりワークシートのみ表示されません。xlSheet.Visible=Trueにしてみたりしてるんですがだめです。ほかに方法がありましたらよろしくお願いします。
補足日時:2004/11/12 10:44No.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()
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
実行時エラー1004「Select メソ...
-
XL:BeforeDoubleClickが動かない
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
VBA 存在しないシートを選...
-
Excel VBA リンク先をシート...
-
Excel チェックボックスにチェ...
-
エクセルVBA Ifでシート名が合...
-
【Excel VBA】Worksheets().Act...
-
Worksheet_Changeの内容を標準...
-
同じ作業を複数のシートに実行...
-
【VBA】色のついたシート名を取得
-
実行時エラー'1004': WorkSheet...
-
Excel VBA 複数行を数の分だけ...
-
VBA 検索して一致したセル...
-
シートが保護されている状態で...
-
ユーザーフォームに入力したデ...
-
VBAでシート挿入を禁止したい。
-
VBでEXCELのシートのコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報