- PR -

ExcelワークシートをVB.NETフォーム上に表示したい

1
投稿者投稿内容
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2002-12-16 14:08
noraと申します。
#初書き込みです。よろしくお願いします。

VB.NETで既存のExcelファイルを制御しようとしています。

その際、VB.NETのフォーム上に、対象となるExcelファイルの特定のシートをそのまま表示させようとして行き詰っています。

このような場合、VB.NETではOleコントロールを介してExcelファイルを操作することができないのでWebBrowser Controlを使用して、リンク先としてExcelファイル名へのパスを指定する方法をとる(と書いてある>参照元記事)ようなのですが、この方法ではExcelのマクロをキックして内容を表示させたまま更新したい場合には遠回りが過ぎます。

そこで、既存の"Microsoft Office Spreadsheet *.0" (*:9.0=2000,10.0=XP)を用いて(VS.NETのツールボックス上で右クリック→「ツールボックスのカスタマイズ」から追加)、フォーム上に貼り付ければ、Microsoft Officeスプレッドシートとして操作が可能になるので、これを用いて既存Excelシートの内容を「関連づけ」たいのですが、肝心の設定方法がまったくわかりません。

シートをそのままオブジェクトとして代入・表示させることはできないのでしょうか?
自分で既存Excelファイルからデータを読み込み、それをMSスプレッドシートに埋めていく処理を記述しなければならないのでしょうか?

ご存知の方、アドバイスをお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-12-16 19:03
こんにちは。

 Windowsアプリケーションであれば、CreateObjectでエクセルを起動して、マクロ操作をすることができますけれども...
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2002-12-16 19:45
ありがとうございます。>Jitta様

そうです。Windowsアプリケーションとして作成しようとしています。

Excelの入っているマシン上で動作させることを前提としていますが、VB.NETからExcelを起動してExcelの画面を表示させて利用者に操作してもらうのではなく、あくまでVB.NETのフォーム上に必要なシートのみを表示させたいと考えています。

「Excelを表示させてしまえば?」と言われると、それはそうなのですが、表示の管理をVB.NET側で行いたいのと、対象となるExcelファイルには、集計結果などのシートが複数あり、そのうちの必要な1シートのみをVB.NETフォーム上に表示させて、それ以外は利用者には見せずに裏でプログラムが処理する用に使いたいのです。

マクロ操作も、VB.NETフォーム上のイベントから、Excelマクロを呼び出して結果のシートのみをVB.NETフォーム上に表示させたいと考えています。

できそうな気がするのですが、あるいは全然考え方を変えないと実現できないのかなと弱気になってきています・・・

引き続きお知恵をお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-12-17 11:52
「OLE コンテナ」あたりだと思うのですが、、、??VC++ではヒットするのですが、VBではヒットしませんね。
一応、マクロでツールバーなどをすべて消すことができますし、シートも「非表示」にすることができます。そういうのでは対応できませんか?
nora
会議室デビュー日: 2002/12/16
投稿数: 13
投稿日時: 2002-12-17 13:24
ありがとうございます。

>OLEコンテナ

そうです。VB6まではこれでよかったと思うのですが、VB.NETになってなくなりました。
(VB.NETからCOMとして利用できるのかな?探してみます。)

ブラウザコントロールを利用してExcelファイルを表示させた場合、ツールバーの表示・非表示も可能ではあるのですが、印刷のプレビューがきかない、などいくつかのツールアイコンが実質無効になってしまうようです。

たしかに対象となるExcel自体に開いた時点でマクロが走るようにしておいて、マクロで表示・非表示をコントロールしておけば可能かもしれません。検討します。

ほかに「あ、それならこうすれば」というのがありましたらよろしくおねがいします。
1

スキルアップ/キャリアアップ(JOB@IT)