@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASPでExcelを起動したいのですが...

投稿者投稿内容
すずめ
会議室デビュー日: 2007/02/20
投稿数: 6
投稿日時: 2007-02-20 13:29
いつも他スレッドを見て勉強させて頂いています。
どこに質問をすればいいのかわからず、
似た質問の載っていたこの場所に書き込みさせて頂きます。

.NET でない質問ですみません。

ASPからExcelの既存ファイルを視覚的に(明示的に?)
開く方法を考えています。
どなたかお力を貸してください。
Windows2003server/IIS6.0/Excel2002

他スレッドの情報を参考に

・フォルダ/ファイルに実行権をつける
・フルパスでファイル呼び出し
・Excelマクロセキュリティは最低に(推奨ではない)
・試しにマクロなしのExcel(test2.xls)を開くように指定

として実行を試みています。
コードを記します。

Set objExcel = Server.CreateObject("Excel.Application")
objExcel.visible = True
set objWkbook = objExcel.Workbooks.Open("d:\[フルパス]\test2.xls")
Set objExcel = Nothing

このとき、エラーなく終了し、
test2.xlsはIIS実行ユーザにて開かれた状態になります。
(手動でtest2.xlsを開くと「***ユーザが開いています」意のメッセージ)

ユーザから見えるように開けないものなのでしょうか・・・。
(希望としては、そこからVBAもしくはユーザ手動にしたいのです。)

根本的な考え方が違うのかもしれませんが、
アドバイスどうぞよろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-20 13:49
引用:

すずめさんの書き込み (2007-02-20 13:29) より:

Set objExcel = Server.CreateObject("Excel.Application")
objExcel.visible = True
set objWkbook = objExcel.Workbooks.Open("d:[フルパス]test2.xls")
Set objExcel = Nothing


サーバー側で開いてもしょうがないのではないですか?

引用:

ユーザから見えるように開けないものなのでしょうか・・・。
(希望としては、そこからVBAもしくはユーザ手動にしたいのです。)


通常はダウンロードさせて実行させます。
(クライアントに存在しないものを、クライアントで実行することはできませんから)

開くだけなら、Web ブラウザの中で開くことはできますが、
これも、クライアントに存在しないものを開いているわけではありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
すずめ
会議室デビュー日: 2007/02/20
投稿数: 6
投稿日時: 2007-02-20 13:58
じゃんぬねっと様

ありがとうございます。
やはりサーバ側で開いてもダメなんですね・・・。

「ダウンロードさせて実行させる」、
他スレッドでもあった言葉と記憶しています。

これは、ASPから
「ダウンロードさせる」
「実行させる」
どちらもできるものなのでしょうか?
無知で申し訳ありません。
アドバイス頂けませんか?

また、調べるためのヒントがあれば教えてください。
よろしくお願いします。
すずめ
会議室デビュー日: 2007/02/20
投稿数: 6
投稿日時: 2007-02-20 14:37
じゃんぬねっと様にアドバイス頂いたように、
ASPで「ファイルをダウンロードさせて実行させる」について調べています。

CSVを作成の折にダウンロードするという方法を見つけました。
http://www.ailight.jp/ASPDownload.aspx

いま課題として残っているのが、
 @クライアントに、サーバにあるExcelファイルをダウンロードしたい
 AそのExcelファイルをクライアントに実行させたい
です。

特にAについて、実はもう何日か調べていますが、
調べ方が悪いようで、良い方法が見つかりません。
どなたかアドバイス頂けないでしょうか?
Marimo
会議室デビュー日: 2003/10/15
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2007-02-20 14:57
お話をIEに限定してしまいますが、
クライアントサイドでVBScriptを走らせればよいのでないでしょうか。
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2007-02-20 14:57
引用:
CSVを作成の折にダウンロードするという方法を見つけました。
http://www.ailight.jp/ASPDownload.aspx

いま課題として残っているのが、
 @クライアントに、サーバにあるExcelファイルをダウンロードしたい
 AそのExcelファイルをクライアントに実行させたい
です。

特にAについて、実はもう何日か調べていますが、
調べ方が悪いようで、良い方法が見つかりません。
どなたかアドバイス頂けないでしょうか?


@については見つけたページのやり方を参考にして、Response.BinaryWriteあたりを
使用することでできないでしょうか?

また、Aについてはユーザが自分の意志とは無関係にファイルを勝手に実行させるこ
とができたらセキュリティ的にまずいため普通はできないのではないでしょうか?

# Excelファイルを開いて表示するだけなら、Content-Typeにapplication/vnd.ms-excel
# を設定すればできるかもしれませんが…
すずめ
会議室デビュー日: 2007/02/20
投稿数: 6
投稿日時: 2007-02-20 15:28
Marimo様

アドバイスありがとうございます。

クライアントサイドに処理をうつし、
そこからExcel起動ができたらとても嬉しいです。

しかし、「クライアントサイドでVBScriptを」が、
いまいちうまくイメージつかめません。

今、home.asp の script 部分から
サーバ側処理専用のvbプログラム ex_out.asp を呼び出し、
(ここで処理を完結できればベストなのですが)
最後にリダイレクトで home.asp に舞い戻るという策をとっています。

ex_out.asp から何らかのかたちでクライアントサイド script を
呼ぶことができるということなのでしょうか。
例えばex_out.asp→ex_out2.asp(ここでスクリプト実行)・・・など?
すずめ
会議室デビュー日: 2007/02/20
投稿数: 6
投稿日時: 2007-02-20 16:02
Katze様

アドバイスありがとうございます。
私の言葉足らずでした申し訳ありません。

@の「Excelのダウンロード」についてですが、
このExcelファイルは、CSVを取り込んだExcelではなく、
帳票のフォーマットというイメージで、
CSVを取り込んでVBAで帳票を作成する機能を有したExcelファイルです。
(既に作成済)

このファイルをサーバに置いておき、
何らかのかたちでダウンロードさせてクライアントに実行させたいと考えています。
(無理ならば運用をかえて、CSVをダウンロードののち、クライアント端末から
 該当Excel(VBA)をキックする方法にさせて頂こうかとも思っています。)

もしかしたらBinaryWriteを使えば、
既存のファイルをダウンロードすることも
可能なのでしょうか・・・。
もう少し調べてみようと思います。

ありがとうございます。

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