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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
【VBA】指定した検索条件に一致...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
ExcelVBA シート名を複数セルか...
-
ブック名、シート名を他のモジ...
-
VBA 存在しないシートを選...
-
vbaエクセルマクロ RemoveDupli...
-
VBAで指定シート以外の選択
-
実行時エラー1004「Select メソ...
-
Excel VBA で自然対数の関数Ln...
-
VBA ユーザーフォーム上のチェ...
-
EXCEL VBA 別シートの同じ文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報