類似の質問(前スレ)
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200606/06060039.txt
こんにちは良です。
前のスレで特攻隊長さんの助言をいただき、自分なりに
いろいろと変えてみました。
単純にエクセルの開始と終了操作のソースを載せます
Private Sub btnExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcel.Click
Dim xlApplication As New Excel.Application
Dim xlBooks As Excel.Workbooks
' xlApplication から WorkBooks を取得する
xlBooks = xlApplication.Workbooks
' 新しい Excel ブックを追加する
xlBooks.Add()
' Excel を表示する
xlApplication.Visible = True
ソースをここまでにしてこの下を記載しないようにしました。
'' 1000 ミリ秒 (1秒) 待機する
'System.Threading.Thread.Sleep(10000)
'' Excel を終了する
'xlApplication.Quit()
'' COM オブジェクトを解放する (正しくは COM オブジェクトを解放する を参照)
'System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
'System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
End Sub
これだと手動で×ボタンを押して勝手に終了しても問題はありませんでした。
この処理の仕方はまずいでしょうか?
やっぱり一個ずつ全部解放しないとまずいでしょうか?
(私ならこうする って程度の情報ですが)
ユーザに見せる部分と、そうでない部分を分けて考えたほうがいいかも。
オートメーション処理は、全て非表示でユーザからは見えない状態で行い。
それが完了したら、一旦Excelを閉じ、Objectは全て明示的に開放する。
で、それが終わった後に、Excelを起動して、ユーザに完成品を見せてあげる。
とか。
こんばんは良です。
もげさん>
ご返信ありがとうございましたm(__)m
すみません。もげさんの内容を自分なりにイメージしようと
したんですがイメージが思いつきません。
すごく簡単でいいので何か一例をあげていただけませんか?
>すごく簡単でいいので何か一例をあげていただけませんか?
>>オートメーション処理は、全て非表示でユーザからは見えない状態で行い。
>>それが完了したら、一旦Excelを閉じ、Objectは全て明示的に開放する。
>>で、それが終わった後に、Excelを起動して、ユーザに完成品を見せてあげる。
ありがとうございました。
まだ完全にはわかってはいないのですが
理解できるように努力いたします。
ツイート | ![]() |