- - PR -
Excelで印刷が終了するのを待つには?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-10 18:13
お世話になります。只今、vb.netでWinアプリを作成中です。
DataSetの内容をExcel出力して印刷し、その後そのファイルを削除しています。 しかし印刷終了を待たないでExcelファイルを削除しようとしているのでプロセスが使用中だと怒られます。シートの印刷終了を待つようにプロセスを管理したいのですが、方法が解らないので教えていただけないでしょうか? 'Excelの起動 oXL = CType(CreateObject("Excel.Application"), Excel.Application) oWB = oXL.Workbooks.Open(FileName, , , , , , , , , , , , ) 'シートの設定 oSheet = CType(oWB.Worksheets(1), Excel.Worksheet) --- 処理 --- 'シートの印刷 oSheet.PrintOut() ここでプロセスを管理したい。 oWB.Save() oSheet = Nothing oWB = Nothing 'アプリケーション終了 oXL.Quit() oXL = Nothing 'ガベージ コレクションを行う GC.Collect() '印刷後ファイルを削除 File.Delete(FileName) ProcessStartInfoクラスでアプリケーションの起動からやる方法はなんとなく解りそうですが、同じ対象ファイルでシートの印刷を管理するにはどうすればよいのでしょうか? ご教示の程、宜しくお願いいたします。 |
|
投稿日時: 2004-09-14 15:54
自己レスです。
結局、 'アプリケーション終了 oXL.Quit() の後に oXL.Wait(5000) と記述してファイルを削除しました。 過去のログ『VB.NETでShellExecuteExを使用する』を参考に印刷をプロセスでやってみたのですが、 ---以下、作成してみたコード--- 'プロセス Dim Proc As New Process Try Proc.StartInfo.FileName = "EXCEL.exe" Proc.StartInfo.Verb = "Open" Proc.StartInfo.Arguments = strFileName Proc.StartInfo.CreateNoWindow = True Proc.Start() Proc.WaitForInputIdle() Proc.WaitForExit(5000) Catch ex As Exception MsgBox(ex.Message) Finally Proc.Kill() End Try '印刷後ファイルを削除 If Proc.HasExited = True Then File.Delete(strFileName) End If -------------------------------------- Proc.StartInfo.Verb = "Open" なら問題ないのですが、 Proc.StartInfo.Verb = "Print" にすると Proc.Start() 以下が上手く作動しませんでした。関連付けられているプロセスはありませんというエラーになります。 また、時間を見つけてチャレンジしてみます。では |
1