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

わんくま同盟

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

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


(過去ログ 86 を表示中)
■50809 / )  Re[8]: Excel(SaveAs)がフ゜ロセスに残る
□投稿者/ VBねっと (5回)-(2010/06/18(Fri) 14:25:32)
No50808 (よねKEN さん) に返信
> ■No50806 (VBねっと さん) に返信
>>--------------------- VB.net(修正版) --------------------
>> System.Runtime.InteropServices.Marshal.ReleaseComObject(oRange)
>> System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet)
>>
>
> oSheetsの解放がありませんので、まずはそれの追加を・・・
>

忘れていました。 追加したら解決しました。

VB.netではレイトバインドを使うとうまくいくというのが判りました。
VB.netはレイトバインドで実装し直ししますが、VBSがうまくいかないの
が気にかかります。

下記のようにQuitの後にSleep 5000を追加すると9/10回はうまくいきます。
VBSで確実にExcelを開放する方法があれば知りたいのですが。。。。。

掲示板とは違う言語の質問になりましたが、これを機会にVBSでもExcelを
動かせるようにしたいと考えています。


----------------------- 改善VBS -----------------------
Dim oBooks
Dim oBook
Dim oSheets
Dim oSheet
Dim oRange

'@エクセルオブジェクトを作成します
Set oExcel = CreateObject("Excel.Application")
Set oBooks = oExcel.Workbooks
Set oBook = oBooks.Add
Set oSheets= oBook.Sheets
Set oSheet = oSheets.item(1)
Set oRange = oSheet.Range("A1")

oRange.Value = "hoge"

'Aエクセルを終了します
oExcel.DisplayAlerts = false
oBook.SaveAs("c:\Book1.xls")
oBook.close()
oExcel.Quit
WScript.Sleep 5000

'オブジェクトの破棄
Set oExcel = Nothing
Set oBooks = Nothing
Set oBook = Nothing
Set oSheets = Nothing
Set oSheet = Nothing
Set oRange = Nothing


返信 編集キー/


管理者用

- Child Tree -