# re: .NET で OLE コントロールに似た動作を実現する方法について 2005/07/06 10:26
確かに苦しいですね(^^
「OLE コントロールに似た動作」 というのもよくわかんない表現ですし。ちゃんと 「Active ドキュメントコンテナをサポートする方法」 とでもしたほうがいいような。。。
けど、逆効果って書かれてるのが気になります。
Active ドキュメントをサポートするのって他にいい方法ありましたっけ?
# re: .NET で OLE コントロールに似た動作を実現する方法について 2005/07/06 10:31
>逆効果
いい方法はないですが、メニューの統合ができないだけかのような印象を受けます。
実質的にはWebBrowserではそこにExcelを開くことができるだけでしかありません。
ネガティブは嫌われてしまうかもしれませんが、無理は無理で堂々と書くべきかと思います。
(期待しすぎると失望されかねません)
# re: .NET で OLE コントロールに似た動作を実現する方法について 2005/07/06 13:21
なるほどです>逆効果
無理は無理で堂々と書くべきってのはそのとおりだと思います。
けど、今回の場合、メニューのマージ以外にできないことって何がありましたっけ?
# re: .NET で OLE コントロールに似た動作を実現する方法について 2005/07/06 13:29
OLEコントロールなら、開いた後いろいろ外部からの操作ができたりしますよね。結局そこにブラウザがある以上のことではないので、かなり違うと思います。
# re: .NET で OLE コントロールに似た動作を実現する方法について 2005/07/06 13:44
あれ?
WebBrowser が Active ドキュメントをホストしている場合、WebBrowser.Document はその Active ドキュメントのドキュメントになっているはずです(IHTMLDocument ではありません)。なので、Document を経由すれば一通りのことができるはずです。
ちょっと待ってください。。。。
VS.NET 2003 を立ち上げてごにょごにょと試す(^^
。。。。試しました。
WebBrowser 経由で Excel を開いてる場合、
Excel.Workbook book = (Excel.Workbook)axWebBrowser1.Document;
Excel.Worksheet sheet = (Excel.Worksheet)book.ActiveSheet;
Excel.Range cell = (Excel.Range)sheet.Cells[3, 2];
cell.Value = "abc";
Marshal.ReleaseComObject(cell);
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(book);
こんな感じで操作できます。
# まっ、相変わらず Marshal.ReleaseComObject がうざいですけどね(^^;
こういうことではないですか?
# re: .NET で OLE コントロールに似た動作を実現する方法について 2005/07/06 13:56
なるほど、それは知りませんでした(知識不足(^^;;)
であれば、確かに似たようなことはできるということですね。(^^