■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つ分けて書く必要があります。
|
|