ライブラリで簡単にできるんじゃないか?と思い調べてみました。Frameworkがインストールされている必要があります。ボタンを1つだけ配置しているようなコントロールを作成し、クリックイベントでSystem.IO.File.Copyでファイルをコピーするようなものを作成し、ビルド。AutoSaveCtrl.dll(適当につけた名前)をASP.NETのアプリをホストするディレクトリのルートにコピーし、Default.aspxファイル(とりあえず)に下記のタグを貼り付ける。/>そったら、実際にアクセスしてみます。ボタンクリック・・・すると。何か怒られました、セキュリティを緩めてあげないといけないようです。どの設定を変えればいいのか?、まだわかっていません。デベロッパー[案3:VB6でActiveXを作る]本題です。本当はC++で作らないと現状はまずいのですが、、ワシのスキルが足りないためとりあえず動作確認ということでVB6で作りました。2008でC++で作ろうとして立ち往生していたのですが、VB6だとアリエナイぐらい簡単に作れてしまった。サポート切れてるけど。やってることは、結局FileSystemObjectでCopyFileして、Shell関数でExcelを起動するだけなんですけどね・・・orz作成したActiveXをASP.NETで動作するようにしてあげます。VB6でコンポーネントの発行を行うと、確認用のhtmファイルが生成されます。こいつの中身をみると以下のObjectタグがあります。こいつをコピーして、ASP.NETのDefault.aspxに貼り付けてやります。ID=”usrCtrl”CLASSID=”CLSID:9679F117-6628-45D9-8D38-7AFEE5DB39F4′′CODEBASE=”AutoSaveAX.CAB#version=1,0,0,0′′></OBJECT>このActiveXのメソッドを呼び出すJavaScriptは以下のものです。ボタンのクリックイベントのメソッドを呼び出しているだけです。loadExcel(){document.getElementById(“usrCtrl”).Command1_Click();}</script>以上で案3により開発環境で意図する動作をするところまでは確認できました。次に実際の顧客環境に展開する際に必要となるパッケージ化の作業を行います。[パッケージ化]作成したActiveXを配布するためのパッケージ化を行います。以下の流れで作業を行います。ウィザードを使って作成します。正式にはVeriSignあたりで正式な証明書を取得してください。ここでは動作確認なのでテスト用のオレオレ証明書を作ります。調査中(ここはありものの「コード署名」するためのテスト用の証明書をもらいました。)作成した証明書をデジタル署名するPCにインストールし、「信頼されたルート証明書機関」に等されていることを確認してください。SDK等に入っている「signtool.exe」で署名します。「-t」オプションでオレオレ証明書を指定しています。AutoSaveAX.CAB実行すると以下のメッセージが表示され、署名完了です。AutoSaveAX.CAB作成したCabファイルをASP.NETの仮想フォルダに配置して準備完了です。[ActiveXのインストール]開発機以外でちゃんと動くかどうか確認します。!!いざ、インストールしてもなぜかインストールされず。何度繰り返しても同じ。Filesに何やらファイル(下記のファイル名)が出力されており。事前にキャッシュをクリアしておくことをお勧めします。実際にActiveXがインストールできない場合にも同様にエラーが出ている可能性もありますので、うまくインストールされない場合には要チェックです。MainExt:(null))出力されているエラーコード「800c0300」あたりでググっていくと・・・ありました。ActiveXコンポーネントはオブジェクトを作成できません。教えて!gooどうも「scrrun.dll」が古すぎているために、インストール時にエラーとなっているようです。ウィザードを使っているため、そのせいかもしれません。再度インストール!!ん・・・いつもより長いこと何かやってる!きたー!!やっとインストールできました。「でも、今更ActiveX」と思うと、現実に引き戻されます。[まとめ]WEBアプリからクライアントのローカルにファイルを保存したい場合は、AjaxとかFlash(Flexとか)なんかを駆使してもセキュリティ上できませんが、ActiveXを利用すれば確かに出来ます。IEでしか利用できないことや今後のことを考えると、基本的には「セキュリティ上、ローカルへのファイル保存は出来ません!」とお断りするべきだと思います。[参考情報]あまり精査してませんが、調査中に見たとおぼしきサイト達。ASP.NETでローカルにファイルを自動保存して開かせたい!?にコメント問題認識能力?えーっと、愚痴っぽい内容なのでそれでも良ければみてくんさいw3月から参戦している現プロジェクトが何故?こんな酷い有様なってしまったのか??を個人的に分析している。そんな中、今日ふと思ったことがあったのでここに綴ってみる。今日、とある仕様に関する問題が発生した。それに対して対応するのは当たり前として、それが発生した原因。今後同様の問題発生しないようにするために手を打つのは個人的には当たり前のことだと思っていた。「問題が潜在していないかを確認することが必要ではないか?」とPMに話したのだが、どうにもこうにも食いつきが悪い。必要だから指示を出すどころか、必要かどうかも判断しようとしない。これに対して痺れを切らしたワシは、「自分が調べます」と言った。そんなことをに憤りを感じながら帰宅中。「PMは問題だという認識が無いじゃなかろうか?」と。何も問題が潜在していないのであれば取り越し苦労ということで済む。経験則上、そんなことはない。自分で言うのもなんだが、ワシは根が心配症なところもありよく気が付きたくないような問題に気づいてしまう。それもあってか、今回のようなケースでギャップを感じるわけです。いうか、PMでこの問題を認識する能力が足りないのは、致命的だとも思う。このことに気がついて今までの事象が何となく繋がりはじめた。現在のPMは予想できる問題が発生しても、上からの指示があるまで行動しない傾向がある。ワシからお願いしてもやってくれないが、同じことを上から言われると動く。これもやりきれないことの一つですな。(ま、自分が仮にPMだったら、もっとどやされているのでしょうが・・・、ここは下から目線でということでお許しください。)ココでもう一つの疑問。自分で判断しないで、上からの指示でしか行動しないのは何でだろう?ワシの会社はいわゆるグループ企業で、ワシの会社がトップではなく、更に上がいる。元々はその上からの仕事だけをやっていた。これを内販と呼んでいる。それだけでは更なる飛躍はできないため、自社がプライムをはるような仕事もやるようになった。これを外販と呼んでいる。ちなみにワシの所属する部署は外販部隊。現在のプロジェクトも外販である。ココからは想像だが、現状のPMは今まで内販のプロジェクトしかやってなかったんじゃなかろうか?と。内販は基本的に言われたことをきっちりこなせばいいというイメージ。問題が起きそうなことがあったとしても、言われない限りやる必要はない。気にしないでいいような感じなのだろうか。対応するということが身につかないような気もする。前のプロジェクトでも似たような性質のPMだったのですが、その方は内販しか経験していない人だった。経験が無いから、どちらかと言えばかわいそうな人なんだと頭で認識していても、どうにもこうにも腹が立ったwそして、よくよく周りを見回してみると、現状のPMと同じ課というか部には「言われたことだけやればいい」という思考回路の人が多いことに気が付く。実際のところそれでプロジェクトが回ればいいんだけど、自分の経験上はNoだ。自分の体が弱ったときに病気になったりするように、問題というものは「あそこ不安だなぁ」というところで発生する。凄く当り前のことなんだけども。不安な部分に気がつかないと結局手の打ちようがないという「鶏が先か、卵が先か」という話になってしまうのだけれど、気がついている不安要素は愚直に潰していくしかない。PMに言ったところで何も変わらないということがわかったので、どういう手段を取るべきか。相談してみますかいね。