C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 144 を表示中)
■84601 / )  Re[3]: Excelのsaveasメソッドでフリーズしてしまいます
□投稿者/ shu (1038回)-(2017/07/20(Thu) 14:17:03)
No84600 (makoto さん) に返信

> >ここは、
> > gvObjBooks = gvObjExcel.Workbooks
> > gvObjBook = gvObjBooks.Open(該当Excelファイル)
> > gvObjSheets = gvObjBook.Worksheets
> > gvObjSheet = DirectCast(gvObjSheets(該当シート), Microsoft.Office.Interop.Excel.Worksheet)
> >になるべきかと思います。
魔界の仮面弁士さんのこの指摘は
gvObjSheets = gvObjBook.Worksheets
の部分が重要なので見落とさないよう気を付けてください。
これを忘れると参照の解放が1個出来ない状態となってしまいます。

Excel内のオブジェクトについて
Obj1のメソッドやプロパティでObj2型のものを返すものを
Obj1.Obj2
としたとき
Obj1.Obj2.Obj3
という書き方をするとObj2についての参照を保持することが出来なくなる為解放が出来なくなります。
それを回避するために
Dim Obj2 = Obj1.Obj2
Dim Obj3 = Obj2.Obj3
のように1つ1つ分けて書く必要があります。




返信 編集キー/


管理者用

- Child Tree -