VB.NETアプリによる起動中Excelの操作。


  2006-07-11 00:06:33  No: 95981

お世話になっております。

1つ質問させてください。

あるプログラムをVB.NETを使用して作成しようと思っています。
それは起動中のExcelファイルを自動的に取得し、
セルにデータを書き込んで自動保存をしようとしております。
(起動はVB.NETのアプリから行なっていませんがが、ブック名はわかります。)

起動中のExcelファイルは下記のサンプルプログラムにより
特定はできました。
ここで特定のできたExcelに対して書込み処理を行ないたいのです。
(Book1.xlsが特定ファイルとしたサンプルです)

Dim localByName As Process() = Process.GetProcessesByName("Excel")
Dim p As Process
Dim fn As String = "Microsoft Excel - " & "Book1.xls"

    '起動中のExcelを取得
    For Each p In localByName
        If System.String.Compare(p.MainWindowTitle, fn, True) = 0 Then
        End If
    Next

ここで質問なのですが、
1.プロセスを特定して、Excelオブジェクトを取得して、処理を行なう。
  この考え方はあっているでしょうか?
2.あっているならどのようにしてプロセスからExcelオブジェクトを
  特定すればよいのでしょう?(使用メソッドなど)
  間違っているなら、どのような方法が取れるでしょうか?
※説明やサンプルの載っているURLを教えていただけるだけでも助かります。

お忙しいところ申し訳ございませんが、
皆様のお知恵を拝借できればと思っております。
宜しくお願い致します。

開発環境は以下の通りです。
Windows2000
VB.NET 2003
Excel 2003


特攻隊長まるるう  2006-07-12 00:55:36  No: 95982

取っ掛かりは
[GetObject 関数 (Visual Basic)]
http://msdn2.microsoft.com/ja-jp/library/e9waz863.aspx

複数のインスタンスが動作している場合、簡単にはいかないでしょう。
[VB6.0]の時代から同じような書込みはたくさんあります。。。
『複数 GetObject Excel』あたりのキーワードでぐぐってみてください。
…これといった解決法は知りません。

なお、[VB.NET]の場合、使用したCOMオブジェクトは ReleaseComObject を
使って解放しないとプロセスが終了しなくなります。


  2006-07-13 20:59:53  No: 95983

特攻隊長まるるう 様
  
  御返事ありがとうございます。
  やはり簡単な話しではないのですね。
  探しても出てこないわけが、わかりました。
  教えて頂いた参考URLからもう少し検討してみたいと思います。
  ありがとうございました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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