投稿者 魔界の仮面弁士  (社会人) 投稿日時 2015/7/2 13:56:36
> 'Excelアプリケーションオブジェクトを生成
> xlApp = CreateObject("Excel.Application")
> 'ワークブック開く
> bookHoge = xlApp.Workbooks.Open("C:\Users.xls")
> 'ワークシートの操作
> shtHoge = bookHoge.worksheets("Sheet1")
> shtHoge.range("T1").value = TextBox1.Text
> shtHoge.range("T2").value = TextBox2.Text
> '保存して閉じる
> bookHoge.save()
> bookHoge.close()
> xlApp.quit()
> xlApp = Nothing

提示頂いたコードでは、解放処理がゴッソリ漏れているようです。
(Nothing 代入で解放されるのは .NET 側のリソースだけです)

現状の作りだと、Excel を Quit メソッドで終了したとしても、実際の Excel.exe は
即時終了せず、非表示状態のまま残り続けてしまう可能性があります。
タスクマネージャーで、Excel.exe が残っていないか確認しておいた方が良いでしょう。


使用済みの COM オブジェクトを即時解放するために、Marshal クラスの
ReleaseComObject メソッドを呼び出すことを検討してみて下さい。
たとえばこんな感じ。

'Imports System.Runtime.InteropServices 

Dim xlApp = CreateObject("Excel.Application")
'xlApp.Visible = True 
Dim xlBooks = xlApp.Workbooks
'Cドライブのルートフォルダで読み書きするのは避けましょう 
'Dim bookHoge = xlBooks.Open("C:\Users.xls") 
Dim bookHoge = xlBooks.Open("C:\SAMPLE\Users.xls")
Dim xlSheets = bookHoge.Worksheets
Dim shtHoge = xlSheets("Sheet1")
Dim xlRange As Object
xlRange = shtHoge.Range("T1")
xlRange.Value = TextBox1.Text
Marshal.ReleaseComObject(xlRange)    '★ 
xlRange = shtHoge.Range("T2")
xlRange.Value = TextBox2.Text
Marshal.ReleaseComObject(xlRange)    '★ 
Marshal.ReleaseComObject(shtHoge)    '★ 
Marshal.ReleaseComObject(xlSheets)   '★ 
bookHoge.Save()
bookHoge.Close()
Marshal.ReleaseComObject(bookHoge)   '★ 
Marshal.ReleaseComObject(xlBooks)    '★ 
xlApp.Quit()
Marshal.ReleaseComObject(xlApp)      '★ 


VB.NET からの Excel 操作については、下記も参照してみて下さい。
http://hanatyan.sakura.ne.jp/dotnet/Excelflm.htm