|
>>>更には、次にエクセルを起動しようとすれば、起動できなくなっています。
>>>(タスクマネージャーからEXCELを終了させれば、起動出来ましたが・・・)
>>こちらについては原因が 2 点考えられます。
>>1) 上位オブジェクトからの参照ができていない。
>>2) オブジェクトの解放がうまくいっていない。
>この場合は、エラーとなってしまうので、2) でしょうか。
1) の場合でもエラーが出ずに、タスクにマネージャーに Excel の残骸が出来る事があります。
先ほどご提示されたコードには特に 1) に該当する所はなさそうなのですが、
> Exl.Workbooks.Open FileName:=「パス名+ファイル名」
> Exl.Workbooks(「ファイル名」).Activate
> If Exl.ActiveWorkbook.ReadOnly Then
この 3行目を
If ActiveWorkbook.ReadOnly Then
などとしてしまうと、余計な Excel のインスタンスが形成されてしまい、
残骸が残ってしまう事となります。
当方が気になるのは 2) の方なのですが、
> Exl.ActiveWorkbook.Close
> Set Exl = Nothing
> Exit Function
Exl.Visible = True
を指定して実行すると解りやすいと思うのですが、
Excel.Application は起動されたままになっていますね。
> Exl.ActiveWorkbook.Close
'追加
Exl.Quit
> Set Exl = Nothing
とすると、うまくインスタンスの解放ができると思います。
(コードの 1部しかご提示されておりませんので、他にも原因があるかもしれませんが)
既に手遅れとなってしまっているかもしれませんが、
>更には、次にエクセルを起動しようとすれば、起動できなくなっています。
とい状態を何回も繰り返していると、
Excel ファイルそのものがおかしくなってしまう事もあります…。
バックアップをこまめにとって大切なファイルを壊さないように気をつけて下さい。
|
|