■84603 / ) |
Re[4]: Excelのsaveasメソッドでフリーズしてしまいます |
□投稿者/ 魔界の仮面弁士 (1351回)-(2017/07/20(Thu) 14:40:34)
|
■No84600 (makoto さん) に返信 >> 開発言語は、.NET 版の Visual Basic のようですが、Excel 操作時においては、 >> 面倒でも「Option Strict On」付きでコンパイルされることをお奨めします。 > ご指摘ありがとうございます。Option Strict On」は宣言はしています。
Option Explicit On と混同していた…という可能性は無いでしょうか?
手元に同一環境が無いので未確認ですが、実際に Option Strict On が指定されているならば、 >> gvObjSheet = gvObjBook.Worksheets(該当シート) のコードで、コンパイルエラー BC30512 あたりが報告されていそうな気がするのですが。
例:『Option Strict On で 'Object' から 'Microsoft.Office.Interop.Excel.Worksheet' への暗黙的な変換はできません。』
それと、今回はテンプレートによる別名保存が主目的なので、Workbooks に対しては Open メソッドではなく、Add メソッドを用いた方が、コードの意図を示せると思います。 (テンプレートとなる元ファイルも、*.xlsx/*.xls ではなく *.xltx/*.xlt で)
> を追加して▼ExcelファイルClose処理のnothingの前にCOMオブジェクトの参照カウントのデクリメント > を行ってみたのですが、Excelが終了しませんでした。
コードの一部をコメントアウトしてみて、どの箇所を通過したときに 終了しなくなるのかを探っていってみてください。
(1) New しただけで、Open(Add) せずにそのまま Quit した場合は、正常に閉じられるのか?
(2) Open(Add) した後、gvObjSheet に該当シートを取得することなく、 gvObjBook.Close(False) と gvObjExcel.Quit() を呼び出した場合は?
(3) 該当シート にアクセスしただけで、セルにはアクセスしなかった場合は?
それと、Excel のオブジェクトに対して For Each を呼び出していないかも確認しておきましょう。 http://bbs.wankuma.com/index.cgi?mode=red&namber=54149&KLOG=91
|
|