お世話になっております。
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
取っ掛かりは
[GetObject 関数 (Visual Basic)]
http://msdn2.microsoft.com/ja-jp/library/e9waz863.aspx
複数のインスタンスが動作している場合、簡単にはいかないでしょう。
[VB6.0]の時代から同じような書込みはたくさんあります。。。
『複数 GetObject Excel』あたりのキーワードでぐぐってみてください。
…これといった解決法は知りません。
なお、[VB.NET]の場合、使用したCOMオブジェクトは ReleaseComObject を
使って解放しないとプロセスが終了しなくなります。
特攻隊長まるるう 様
御返事ありがとうございます。
やはり簡単な話しではないのですね。
探しても出てこないわけが、わかりました。
教えて頂いた参考URLからもう少し検討してみたいと思います。
ありがとうございました。
ツイート | ![]() |