Timerで更新されるTextBox値をExcelに出力

解決


キー  2008-11-28 15:38:50  No: 140907  IP: 192.*.*.*

VB2008において、Timerで更新されるTextBox値をすでに開いてあるExcelのセルへA1→B1→C1→・・・と順に出力したいのですが、
既に開いてあるExcelを操作する方法を教えてください。
セルに書き込む操作は各種サイトで参照できましたが、
どれもファイルを開いた後に値を入れる操作ばかりでしたので。

編集 削除
魔界の仮面弁士  2008-11-28 18:22:18  No: 140908  IP: 192.*.*.*

GetObject 関数で起動中の Excel を拾えば、実装可能かと。

ただ、Excel が複数起動されていた場合にどうするのか、といった問題もあるので、個人的には「プログラムから起動する」もしくは「Excel VBA で処理する」方が無難であるように思えます。

編集 削除
キー  2008-11-29 13:33:42  No: 140909  IP: 192.*.*.*

GetObjectで操作できました。ありがとうございました。
続けて教えてください。
セル(1,1)→(2,1)→(3,1)→・・・と順に入れて行くには、
行を変数(例えば"A")に設定して、
If xlsheet.cells(A,1).value > 0 then     'xlsheetは別途設定済
   xlsheet.cells(A+1,1).balue = ***      '***は数値
End If
などとすれば良いと思うのですが、間違いないでしょうか?
また、行を変数に設定する関数はどうすればよいのでしょうか?

編集 削除
魔界の仮面弁士  2008-11-29 14:46:38  No: 140910  IP: 192.*.*.*

> セル(1,1)→(2,1)→(3,1)→・・・と順に入れて行くには、
Offset プロパティを使う事で、次のセル範囲を得る事ができます。

> If xlsheet.cells(A,1).value > 0 then     'xlsheetは別途設定済
.NET の場合、そのような書き方をしてはいけません。
オブジェクトを解放できなくなってしまいますので…。

「Marshal.ReleaseComObject」というキーワードで調べてみてください

> 行を変数(例えば"A")に設定して、
もしかして、Range プロパティと Cells プロパティを混同していませんか?

編集 削除
キー  2008-12-02 11:47:25  No: 140911  IP: 192.*.*.*

VBAでOffsetマクロを組むことで解決しました。
ありがとうございました。

編集 削除