• ベストアンサー

VB.NETで既存Excel worksheetを操作する方法

VB.net、office XPのexcelを使用しています。 既存のexcelのworkbookのworksheetの特定のセルに、 値を代入してsaveする方法について、 ご存知の方、教えてください。 新規のworkbookのsheet1になら、値を入れることは できるのですが、既存workbookのworksheetに する方法がわかりません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

ん~、 System.GC.Collect() がうまく機能していないんでしょうかねぇ。 ちなみに、当方はWinXP + Excel2000の環境ですが、上記の1行を実行すれば、正常にExcelプロセスが開放されます。 ……あ、そっか、 他のbookHogeとかshtHogeとかの変数も、Nothingしてやってください。 **********   '保存して閉じる   bookHoge.save()   bookHoge.close()   shtHoge = Nothing   bookHoge = Nothing   xlApp.quit()   xlApp = Nothing ********** ココに書き込むときにソースコードを修正したんですが、そのときに抜けちゃったんでしょうかねぇ。

ssi77
質問者

お礼

返答ありがとうございます!!! うまくいきました!!! 助かりました。 もうし遅れましたが、環境は、 WinXp proとOfficeXP Excelです。

その他の回答 (1)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

ん~と、こんな感じです。 Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click   Dim xlApp As System.Object   Dim bookHoge As System.Object   Dim shtHoge As System.Object   'Excelアプリケーションオブジェクトを生成   xlApp = CreateObject("Excel.Application")   'ワークブック開く   bookHoge = xlApp.Workbooks.Open("C:\hoge.xls")   'ワークシートの操作   shtHoge = bookHoge.worksheets("SheetHoge")   shtHoge.range("A3").value = "あああ"   shtHoge.range("D2").value = 1   '保存して閉じる   bookHoge.save()   bookHoge.close()   xlApp.quit()   xlApp = Nothing   '※ .net では、Nothingしてもメモリが開放されないことに注意。   'ここでは強制的にガベージコレクタを起動することにより、xlAppを開放して、   'ワークブックの排他制御を止めさせる。   System.GC.Collect() End Sub

ssi77
質問者

お礼

返答ありがとうございます。 うまくExcelシートが作れるようになりました。 その出力したシートをエクスプローラから 起動すると、画面が崩れたような形になります。 それで、Excelを終了し、再度立ち上げると、 うまく起動します。 また、出力後、VB Studio.netを終了し、出力したシートを起動すると、まったく問題なく立ち上がります。 VBのプロセスが、Excelプロセスをつかんだままに なったままのような気がするのですが。。。

関連するQ&A