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

解決


キー  2008-11-29 00:38:50  No: 140907

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


魔界の仮面弁士  2008-11-29 03:22:18  No: 140908

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

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


キー  2008-11-29 22:33:42  No: 140909

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 23:46:38  No: 140910

> セル(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 20:47:25  No: 140911

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加