VB2008において、Timerで更新されるTextBox値をすでに開いてあるExcelのセルへA1→B1→C1→・・・と順に出力したいのですが、
既に開いてあるExcelを操作する方法を教えてください。
セルに書き込む操作は各種サイトで参照できましたが、
どれもファイルを開いた後に値を入れる操作ばかりでしたので。
GetObject 関数で起動中の Excel を拾えば、実装可能かと。
ただ、Excel が複数起動されていた場合にどうするのか、といった問題もあるので、個人的には「プログラムから起動する」もしくは「Excel VBA で処理する」方が無難であるように思えます。
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
などとすれば良いと思うのですが、間違いないでしょうか?
また、行を変数に設定する関数はどうすればよいのでしょうか?
> セル(1,1)→(2,1)→(3,1)→・・・と順に入れて行くには、
Offset プロパティを使う事で、次のセル範囲を得る事ができます。
> If xlsheet.cells(A,1).value > 0 then 'xlsheetは別途設定済
.NET の場合、そのような書き方をしてはいけません。
オブジェクトを解放できなくなってしまいますので…。
「Marshal.ReleaseComObject」というキーワードで調べてみてください
> 行を変数(例えば"A")に設定して、
もしかして、Range プロパティと Cells プロパティを混同していませんか?
VBAでOffsetマクロを組むことで解決しました。
ありがとうございました。