dポイントプレゼントキャンペーン実施中!

C#でASPでEXCELをマクロ動かすものを作ろうと思うのですが、
どうやって作ったらよいでしょうか。

具合的にいいますと、
クライアントで表示した画面のあるボタンを押すと、
サーバにあるExcelのマクロが起動して結果(Excelの表)を
クライアント側で表示する。

といったものです。
サーバ側にはExcelは入ってないので、
クライアント側にダウンロードしてきてマクロを起動すると
いったものになると考えています。

ざっくりとした説明ですが、
どうやって実現すればいいか分からない状況です。

自分でも調べていますが、
どなたか教えていただければと思います。

ここを見ればとかヒントのようなものでも
かまいませんので是非お願いします。

A 回答 (4件)

ちょっと趣旨が噛みあっていないようなので。



基本的には、
・サーバ(Webサーバ、またはLAN/VPN上のWindowsサーバ)があって、そこにデータベースがある
・クライアント(PC)があって、マクロ(プログラム)の入っているExcelを動かす
ということではないかと思います。

そのうえで、
・クライアント上でExcelを動かし、サーバからデータを持ってきて、表示する。
・あとはExcel上で何かする(整形やコピー、印刷、場合によってはサーバへの書き戻しなど)

Excel上の従来型「マクロ」ではC#やVB.NET言語は使用できません。使えるのは旧式のVBAのみ。
現在は、Visual Studio 2005以上を使い、C#やVB.NETで「VSTO=Visual Studio Tools for Office System」形式でアドオンやドキュメント上のDLLモジュールを開発します。
VSTOであればC#で開発でき、(もしあれば)VBAで昔、作らたマクロを呼び出すことも可能です。
もちろん、.NETの全機能が使用できるので、古臭いExcel VBAの機能に制限されることもありません。
相手がWebサーバでも、XML WebサービスやWCFを使ってデータの読み書きが可能です。

要するにプログラムのインターフェース画面をExcelやWordにするため、その上で動くモジュールを開発する、ということです。Offuice2003以上で対応します。
C#でWindowsアプリケーションを開発したことがあれば、そんなに難しいことではないと思います。
(VSTOはVisual Studio 2003までは別商品でしたが、VS2005からは内蔵されています)

参考URL:http://www.atmarkit.co.jp/fdotnet/special/vstode …
    • good
    • 0

サーバ側にExcelをインストールしないでもExcelを


カスタマイズする方法はあります。現在、microsoftの
推奨はOpenXMLです。これでExcel2007形式のファイルが
作れます。これは説明によると、XMLでブックやシートを
表したものをZIP圧縮したとのことです。
難しいのは放っておいて、Excel用のライブラリを
下記URLからダウンロードします。
http://excelpackage.codeplex.com/
ここには使い方サンプルもリンクしています。

クライアント側がExcel2007でない場合は互換パックを
インストールすればExcel2007を開けるようになります。
http://www.microsoft.com/downloads/details.aspx? …

自動実行はブックのOpenイベントに入れるのが普通です。
拡張子は".xslx"で、ダウンロードして開くと、「修復が
必要」という警告が出ることがありますが、修復すれば
データが破壊されること無いようです。(簡単なヤツしか
実験してない)
    • good
    • 0

Excelにシートを表示するだけで難しいことはしないのあれば、HTMLのTABLEタグをそのまま読ませればよい。



Response.ContentType = "application/excel";
Response.Write("<table>~</table>");
Response.End();

下のサンプルでは、Response.Writeの部分でGridView(TABLEタグ生成のスペシャリストである)を利用しています。

参考URL:http://www.highoncoding.com/Articles/197_Extensi …
    • good
    • 0

>サーバにあるExcelのマクロが起動して


>サーバ側にはExcelは入ってない
矛盾してますね。Excelが無ければマクロは起動しません。

クライアント側でダウンロードしたExcelを手動で操作し、
マクロを実行するしかないでしょう。
ダウンロードからファイルを開くまで自動でできたら、
ウィルスを送り込むのが簡単になってしまいます。
よって、そのような機能を持つようなブラウザは誰も
使いたがらないし、要求の無い機能を開発する人も
いません。
    • good
    • 0
この回答へのお礼

なるほど、いわれてみればそうですね。
ありがとうございます。

ダウンロードして、Auto_Open?だかで動かすようにします。
サーバ上でExcelは動かせないのでパラメータが渡せないのが
つらいなあ・・・

お礼日時:2010/05/28 13:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!