• 締切済み

objectタグを使用してEXCEL出力

ここを含めて、いろんなサイトで調べましたが分からなかったので質問させていただきます。 ASPで、画面のボタン(画像)をクリックしたときに、別のASPを呼び出してIEでEXCELを表示する画面なのですが、 (以下抜粋) <a href="javascript:void(0)" onClick="exp.VbsExec('http://xxxxxxxx.asp')"><img src="xxx.gif" height="20" title="EXCEL表示" border="0"></a>    ・    ・    ・ <object ID="exp" CLASSID="CLSID:7873326C-CB0C-4F2C-99A6-414E128922ED"> </object> 複数のPCで使用していて、同じPC・同じ環境で使用しているのに1台だけ、クリック時にスクリプトエラー「オブジェクトでサポートされていないプロパティまたはメソッドです。」となりEXCEL表示することができません。 上記ソースの「exp.VbsExec」でエラーとなっているようなのでASPの関連サイトを巡って調べましたが原因がわかりませんでした。 原因及び対処方法を教えていただけないでしょうか。 よろしくお願いします。

みんなの回答

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.2

ご連絡が遅くなってしまい、すいません。 既に解決済みかもしれませんが、今後のために情報をUPしておきます。 Windows Media Player の例になってしまいますが、同様のエラーがWindows Media Player でも出ることがあるみたいで、Excelでも 同じことが言えるのではないかと思っております。 恐らく、http://faq.stream.co.jp/faq/w014.html で、ブラウザの 設定を変更すると、その問題PCでも、エラーなくExcel処理ができるのではないかと思います。 ひとまず、http://faq.stream.co.jp/faq/w014.html を参考に 問題PCのブラウザ設定をご確認ください。 >ちょっとお尋ねしたいのですが、exp.VbsExecで指定しているASPファ>イルの方でエラーがある場合、エラー画面で表示されるファイル名や行数は、本来のエラー箇所ではなく、exp.VbsExecの方が表示されるの>でしょうか? これについては、実際にASPファイルをブラウザで表示した時に 生成されるHTMLの行番号です。(クライアント側のコードの場合) サーバー側のコードであれば、ASPファイルの該当する行番号を具体的に示します。 今回のようにExcelの処理をクライアント側で実装されているので、 HTMLの行番号になります。 イメージがつきずらいかもしれませんが、エラー箇所はASPファイルが画面に表示された後、ブラウザ内で右Clickし、「ソースの表示」をしてもらうと、ASPを実行したことによって生成されたHTMLのコードが表示されますので、そのHTMLコードの行番号を見るとだいたい当たりがつきます。 ご参考にならない情報かもしれませんが、ご検討頂けると幸いです。 宜しくお願いします。

参考URL:
http://faq.stream.co.jp/faq/w014.html
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

そのエラーになるPCだけ、Excelのバージョンが違うとかそういったことはございませんか? 必ずしもExcelのCLSIDは、全バージョンで一致しているとは限らないので、Excelのバージョンと、exp.VbsExecのソースの内容を拝見したいところです。 もう少し、細かい補足をお願いできればと思います。 宜しくお願いします。

fmtownzInf
質問者

補足

回答ありがとうございます。 現在、そのPCが手元にないので正確なバージョンはわかりませんが、 Excel2007で、他のPCと同一のものが入っています。 手元にあるときにレジストリエディタで「exp.Bean」と「EXCEL.Aprication」のCLSIDを比べてみたりしたのですが、正常に動作しているPCと同じ内容でした。 あと、exp.VbsExecのソースの内容ですが、ある程度省略して書きます。 Dim Books(3) <% Books(1) = "http://xxxxxx/xxxx.asp?xxxxxxx" Books(2) = "http://xxxxxx/xxxx.asp?xxxxxxx" Books(3) = "http://xxxxxx/xxxx.asp?xxxxxxx" %> ' エクセルオブジェクトの準備 Set XL = WScript.CreateObject("Excel.Application") XL.Visible=True ' エクセル表示 DispAlerts = XL.DisplayAlerts XL.DisplayAlerts = False 'デバッグ時はTrue 'XL.ScreenUpdating = False ' 新しいワークシート作成 Set NB = XL.Workbooks.add Dim OldSheet() Redim OldSheet(NB.Sheets.Count) For ix = 0 to NB.Sheets.Count-1 OldSheet(ix) = NB.Sheets(ix+1).Name Next ' データソースワークシートの取得 ix = 0 Do While Books(ix) <> "" Set BK = XL.Workbooks.Open(Books(ix)) BK.Activate BK.Sheets(1).Copy NB.Sheets(OldSheet(0)) ' 常に'Sheet1 ' データソースワークシートのクローズ BK.Saved=True BK.Close(false) ix = ix + 1 Loop ' 新しいワークブックのデフォルト作成されるシートを削除する For ix = 0 to UBound(OldSheet)-1 NB.Sheets(OldSheet(ix)).Delete Next NB.Sheets(1).Select XL.ScreenUpdating = True XL.DisplayAlerts = DispAlerts 以上です。 ちょっとお尋ねしたいのですが、exp.VbsExecで指定しているASPファイルの方でエラーがある場合、エラー画面で表示されるファイル名や行数は、本来のエラー箇所ではなく、exp.VbsExecの方が表示されるのでしょうか? よろしくお願いします。

関連するQ&A