- - PR -
ASP(.NETではない)から、マクロ付きExcelが保存できません
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-07 15:00
お世話になります。
現在、お客様先のイントラネット環境で社内Webを開発中です。 Server:Windows2000Server IIS5.0 開発元クライアント:WindowsXP-SP2 Server側Excelバージョン:2002(SP3) こちらの会議室を大体は閲覧しましたが、回答がなかったりしたのでご質問させていただきます。2つのパターンで実験しました。 【パターン1】 元ソース(抜粋): オープン処理 ''EXCELオブジェクト Set objExcel = CreateObject("Excel.Application") objExcel.Application.Visible = False ''EXCELオープン Set objWbk = objExcel.Application.Workbooks.Open(F_NAME1) 上記は問題なく開いています。 Excelマクロ実行・・objExcel.Run("ThisWorkbook.make_graph") 上記も問題ありません。 書き込み処理: objWbk.SaveAs(exfilename) ここで、Error!:(1004)---ファイルを保存できませんでした。のエラー発生。 サーバー側のフォルダに別名で書き込みできていません。 フォルダの権限は、Everyone、IUSR_XXXXXで読み書き可能にしています。 なお、マクロの無いExcelは、上記処理で問題なく保存できており、閲覧もできます。 Excel側のマクロのセキュリティも「低」にしてあり、メッセージは出ないようにしてあります。 【パターン2】 1がだめでしたので、上記パターン1のエクセルオープンから書き込みまでの処理をVBSに独立させ、ASP側から、下記命令を実行しました。 '##### Shellオブジェクトのインスタンス化 ##### Set objWsShell = Server.CreateObject("WScript.Shell") '##### シェルを起動する ##### exec_f = "wscript \\43.29.68.40\wwwroot\ukeire\menu10\menu10_2\make_excel.vbs " & hassei Call objWsShell.Run(exec_f,1,false) '### Shellオブジェクトの破棄 ### Set objWsShell = Nothing サーバー側のタスクにはWscript.exeが存在し、起動していることは確認できましたが、肝心のExcelファイルが作成されていません。ちなみに、上記VBSをクライアント側よりMS-DOSプロンプトで実行したところ、問題なく作成されていました。 出来れば1のパターンで開発を続行していきたいのですが、環境の問題のような気がしています。どうぞどなたかお知恵をお貸しください。 | ||||
|
投稿日時: 2006-12-07 15:24
権限に問題がないとすると... テンプレートから開いて、別名保存してもダメでしょうか? 要するに既存のワークシートを使わないようにします。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-12-07 15:31
早速のご返事ありがとうございます。実は、じゃんぬれっとさんの仰るとおりにテンプレートを作っておいて別名保存をしようとしています。やはり環境でしょうか・・・当社の別部隊でも似たような案件がありましたが、特に問題はなかったように聞いています。かなり焦ってます。納期が12/15なので・・・ | ||||
|
投稿日時: 2006-12-07 16:20
ファイル名だけなのかな?
絶対パス通してもだめですかね? IISってサーバーアプリケーションの位置を定数で持ってた様に思いますが、 それを追加してやるって感じでは駄目ですかね? たまたまPATHが通っている場所に テンプレートがあった・・・開いて実行はできる って状態じゃないでしょうか? 憶測なので、絶対にできるとは言えませんが。汗 [ メッセージ編集済み 編集者: るぱん 編集日時 2006-12-07 16:21 ] | ||||
|
投稿日時: 2006-12-07 16:21
ときに、テンプレートから別名保存で、うまくいきますか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-12-07 16:25
あっ、思いっきり見落としていました。 確かに、'exfilename' がフルパスでないとすると、カレント ディレクトリに保存しようとしますね。 その場合は権限の都合で、当然保存に失敗します。 オートメーション上では、ランタイム エラー 1004 が発生しますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-12-07 16:26
るぱんさん、ご回答ありがとうございます。はい。絶対パスで通してます。 ちょっと考えるとこがあり、先ほどのじゃんぬねっとさんのコメントでちょっと閃いたのですが、もう一つマクロの無いBOOKを開いて、そこにテンプレートに作成した結果シートをコピーして別名で保存する。(マクロ自体は、ThisBookに作りこんでるので、マクロは影響しませんよね) | ||||
|
投稿日時: 2006-12-07 16:29
ちょうど入れ違いでした(^ ^; るぱんさんの言われるとおり、絶対パスで通してます。マクロが付かないExcelだと同じロジックで全く問題はないのです(泣 |