プロが教える店舗&オフィスのセキュリティ対策術

VB.net、office XPのexcelを使用しています。

既存のexcelのworkbookのworksheetの特定のセルに、
値を代入してsaveする方法について、
ご存知の方、教えてください。

新規のworkbookのsheet1になら、値を入れることは
できるのですが、既存workbookのworksheetに
する方法がわかりません。

よろしくお願いいたします。

A 回答 (2件)

ん~、


System.GC.Collect()
がうまく機能していないんでしょうかねぇ。
ちなみに、当方はWinXP + Excel2000の環境ですが、上記の1行を実行すれば、正常にExcelプロセスが開放されます。

……あ、そっか、
他のbookHogeとかshtHogeとかの変数も、Nothingしてやってください。

**********
  '保存して閉じる
  bookHoge.save()
  bookHoge.close()
  shtHoge = Nothing
  bookHoge = Nothing
  xlApp.quit()
  xlApp = Nothing
**********

ココに書き込むときにソースコードを修正したんですが、そのときに抜けちゃったんでしょうかねぇ。
    • good
    • 0
この回答へのお礼

返答ありがとうございます!!!
うまくいきました!!!
助かりました。

もうし遅れましたが、環境は、
WinXp proとOfficeXP Excelです。

お礼日時:2004/02/29 12:30

ん~と、こんな感じです。



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
    • good
    • 1
この回答へのお礼

返答ありがとうございます。
うまくExcelシートが作れるようになりました。

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

お礼日時:2004/02/29 02:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!