開発環境
Windows 2000
Excel 2000
Visual Studio .net 2003
MFCでエクセルを操作する方法についてお聞きします。
エクセルを起動し、セルの値を読み書きする
アプリケーションを作成しています。
現在、アプリケーションからセルの値を読み書きすることは
できるようになりました.
この方法は
http://support.microsoft.com/kb/308407/
を参考に行いました.
タイプライブラリを使う方法を使っています。
質問したいことはアプリケーが開いたエクセルのブックを非表示にすることです。
既にエクセルを開いた状態で、アプリケーションからエクセルブックを開くと、
エクセルブックが表示されてしまいます。
アプリケーションから開いたエクセルブックを非表示にするにはどのようにすれば
よいのですか。
よろしくお願いします。
ちなみにエクセル自体や、シートの非表示は
put_Visible()メソッドを使えばできました.
ブックにかんするput_Visible()メソッドは存在するのですか。
WorkBookオブジェクトのWindowsプロパティからWindowオブジェクトを取得して
(インデックスは1でよかったと思う)VisibleプロパティをFalseにすればいいです。
Blueさん早い返事ありがとうございます。
Bleuさんに教えていただいたことを参考に
下記のコードを試した見ました。
ビルドは通るのですが、実行すると、
メンバが見つかりませんとエラーダイアログが出てきます。
wind.AttachDispatch(wbook.get_Windows());
wind.put_Visible(false);
VBAではBleuさんに教えて頂いた方法でできると思いますが、
MFCでタイプライブラリのラッパークラスを使っても、
同様の方法でできるのでしょうか。
違ってるかと。
WorkbookオブジェクトからWindowsオブジェクトを取得
↓
WindowsオブジェクトからWindowオブジェクトを取得
↓
Windowオブジェクトのput_Visibleメソッドで非表示にする。
つまり、真ん中の処理が抜けてるからエラーがでるわけです。
Blue様ありがとうございます。
以下のコードにしたらブックを非表示にすることができました。
winds.AttachDispatch(wbook.get_Windows());
wind.AttachDispatch(winds.get_Item(COleVariant((short)1)));
wind.put_Visible(false);
解決しました.
ありがとうございました.