■No50727 (魔界の仮面弁士 さん) に返信
アドバイス頂いた内容を確認しましたが、どうもExcel2003 SP3側に原因がありそうです。
VB.netでの回避手段も模索しています。
>> 参照設定を外し、すべてレイトバインドで利用してみた場合はどうでしょうか?
→チェック用に別プロジェクトを作成し、下記のコードで確認しましたがだめでした。
Private Sub Button1_Click
Dim oExcel As Object
Dim oBooks As Object
Dim oBook As Object
Dim oSheet As Object
Dim oRange As Object
Try
'Excel起動
oExcel = CreateObject("Excel.Application")
oBooks = oExcel.Workbooks
oBook = oBooks.Add
'仮データ入力
oSheet = oBook.Worksheets(1)
oRange = oSheet.Range("A1")
oRange.Value = "hoge"
'Excel保存し終了
System.Runtime.InteropServices.Marshal.ReleaseComObject(oRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet)
oBook.SaveAs("c:\Book1.xls")
oBook.close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks)
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
>> .NET ではなく、Word VBA や VBScript などから呼び出した場合も、残ってしまいますか?
→下記コードで2回目以降に残ります。(上書きになるため?)
但し、oExcel.DisplayAlertsをTrueにしても、2回目以降にあわられる「上書きしますか?」
で「はい」を選んでも残ります。
直接、手動でExcelを開き、プログラムと同じ処理をしてみましたが、当然のことながら、
問題は起きませんでした。 Excelのみを使用する場合は起きません。 Excelを外部プログ
ラムで操作すると起きるようです。
Option Explicit
Dim oExcel
Dim oBooks
Dim oBook
Dim oSheet
Dim oRange
'@エクセルオブジェクトを作成します
Set oExcel = CreateObject("Excel.Application")
Set oBooks = oExcel.Workbooks
Set oBook = oBooks.Add
Set oSheet = oBook.Worksheets(1)
Set oRange = oSheet.Range("A1")
oRange.Value = "hoge"
'Aエクセルを終了します
oExcel.DisplayAlerts = false
oBook.SaveAs("c:\Book1.xls")
oBook.close()
oExcel.Quit
'オブジェクトの破棄
Set oExcel = Nothing
Set oBooks = Nothing
Set oBook = Nothing
Set oSheet = Nothing
Set oRange = Nothing
>>ネットに「SaveAsの後にApplication.DoEvents()を入れてみてください。」というのがありましたが、
> 具体的な URL を教えていただけないでしょうか。
→http://ap.atmarkit.co.jp/bbs/core/fdotnet/10767?page=2 にありました
> どうしても解決できないようであれば、CreateDomain したアプリケーションドメインに
> Excel.Application を CreateInstanceFromAndUnwrap しておき、xls 保存処理完了後に、
> 最後にそのアプリケーションドメインを Unload してみるというのは如何でしょう。
→う〜ん 非力な私には時間がかかりそうです。
もう少し勉強します。
(初心者に近い私にとって、ネットで検索しても実装するために必要な知識を習得できそうな記事が
見当たりません。ヒントになるようなサイトがあれば紹介お願いします。)
|