- ベストアンサー
VB.NETで既存Excel worksheetを操作する方法
VB.net、office XPのexcelを使用しています。 既存のexcelのworkbookのworksheetの特定のセルに、 値を代入してsaveする方法について、 ご存知の方、教えてください。 新規のworkbookのsheet1になら、値を入れることは できるのですが、既存workbookのworksheetに する方法がわかりません。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ん~、 System.GC.Collect() がうまく機能していないんでしょうかねぇ。 ちなみに、当方はWinXP + Excel2000の環境ですが、上記の1行を実行すれば、正常にExcelプロセスが開放されます。 ……あ、そっか、 他のbookHogeとかshtHogeとかの変数も、Nothingしてやってください。 ********** '保存して閉じる bookHoge.save() bookHoge.close() shtHoge = Nothing bookHoge = Nothing xlApp.quit() xlApp = Nothing ********** ココに書き込むときにソースコードを修正したんですが、そのときに抜けちゃったんでしょうかねぇ。
その他の回答 (1)
- ARC
- ベストアンサー率46% (643/1383)
ん~と、こんな感じです。 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
お礼
返答ありがとうございます。 うまくExcelシートが作れるようになりました。 その出力したシートをエクスプローラから 起動すると、画面が崩れたような形になります。 それで、Excelを終了し、再度立ち上げると、 うまく起動します。 また、出力後、VB Studio.netを終了し、出力したシートを起動すると、まったく問題なく立ち上がります。 VBのプロセスが、Excelプロセスをつかんだままに なったままのような気がするのですが。。。
お礼
返答ありがとうございます!!! うまくいきました!!! 助かりました。 もうし遅れましたが、環境は、 WinXp proとOfficeXP Excelです。