質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

Q&A

解決済

1回答

1846閲覧

【VB.NET】IE以外のブラウザでExcelファイル出力ができない

meri008

総合スコア5

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

0グッド

0クリップ

投稿2022/06/02 07:32

編集2022/06/06 00:06

実現したいこと

言語:VB.NET、VBScript

DBからデータを取得し、その内容をExcelファイルに出力する機能があります。
IEではファイル拡張子".xls"でダウンロードされますが、別ブラウザでは".asp"でダウンロードされます。
別ブラウザでも".xls"で出力されるようにしたいです。
こちらについて考えられる原因をご教授お願いします。

該当のソースコード

VB.NET

1 '//* ファイル出力ボタン押下 2 Public Sub CreateExcel() Handles CreatExcelBtn.Click 3 4 '//* DBからデータ取得 5  Response.Redirect("./excelCreate.aspx") 6 7 End Sub

VB.NET

1**excelCreate.aspx** 2 3<% @language="vbscript" %> 4<% 5 On Error Resume Next 6 7 '---エクセル形式出力を指定 8 Response.Buffer = true 9 Response.ContentType = "application/vnd.ms-excel" 10 11 '---クエリ実行して出力    12 13 Response.Flush 14 Response.End 15%>

試したこと

Response.AddHeader = "Content-Disposition", "attachment;filename=test.xls";
を入れたところ、

Microsoft VBScript コンパイル エラー (0x800A0401)
ステートメントの末尾が不正です。

とエラー

開発環境

Microsoft Development Environment 2003 Version 7.1.6030
Microsoft .NET Framework 1.1 バージョン 1.1.4322 SP1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/06/02 07:47

クラシック ASP の話ですか? ASP.NET の話ですか? 前者であれば ASP のタグを、後者であれば ASP.NET のタグをつけてください。 開発環境を書いてください。
退会済みユーザー

退会済みユーザー

2022/06/02 09:15

ホントに ASP.NET ですか? ASP.NET で VBScript は使わないはずですけど。クラシック ASP or ASP.NET の区別がつかないのでしょうか? 開発環境を書いてください。←二度目のお願い
meri008

2022/06/03 00:30

VB.NETに最近初めて触れたもので、知識が薄く、区別がついていませんでした。 とあるブログで「拡張子の違い:ASPは『.asp』となり、ASP.NETは『.aspx』となる」という記載を確認し、ASP.NETだと判断しました。 他に区別をつけるものがあればご教授ください。
len_souko

2022/06/03 00:42 編集

> Microsoft VBScript コンパイル エラー 質問者さんの記載したエラーではVBScriptと記述されています ですがあなたはVB.NETだと主張しています そこで既に認識が間違っています ひょっとして、VB.NETを使用したasp.netにVBScriptを使用したaspを混在させているのではありませんか? 一つ目のソースコードはVB.NETっぽいんですけどねぇ・・・ エラーが出ているという二つ目はどう見てもVBScriptなんですよ
len_souko

2022/06/03 00:52 編集

って、開発環境ですが、なぜ今それを選んだんですか? VisualStudio2003のIDE個別のバージョン情報の様ですが 当時動いていたWebブラウザは全て滅亡し、IEが今月いっぱいまで?のタイミングです そもそも言語としてもVB.NETは終わりましたのでどれ一つとして今選択肢に上がるようなものではありません ひょっとして15年以上過去からタイムスリップでもしましたか?ってレベルです
退会済みユーザー

退会済みユーザー

2022/06/03 01:42 編集

> とあるブログで「拡張子の違い:ASPは『.asp』となり、ASP.NETは『.aspx』となる」という記載を確認し、ASP.NETだと判断しました。 であれば ASP.NET であろうと思われます。ただ、 > Microsoft Development Environment 2003 Version 7.1.6030 > Microsoft .NET Framework 1.1 バージョン 1.1.4322 SP1 ということですと、あまりに古くて同じ環境では自分は検証できないのですが、自分の環境にある中で一番古い VS2015 でやってみます。少々お待ちください。
退会済みユーザー

退会済みユーザー

2022/06/03 08:59

クラシック ASP の話のことですので、VB.NET のタグは外していただくようお願いします。(VBScript のタグはそのままで)
guest

回答1

0

ベストアンサー

自分の環境にある Visual Studio 2015 + .NET Framework 4.6.1 でやってみました。

まず、

Response.AddHeader = "Content-Disposition", "attachment;filename=test.xls";
を入れたところ、Microsoft VBScript コンパイル エラー (0x800A0401) ステートメントの末尾が不正です。

のところですが、コードが間違っています。以下のようにしてみてください。

Response.AddHeader("Content-Disposition", "attachment;filename=test.xls")

ただし、それがこのスレッドの問題である、

IEではファイル拡張子".xls"でダウンロードされますが、別ブラウザでは".asp"でダウンロードされます。

の解決になるかどうかは分かりません。

ブラウザによってファイルの種類を判断する方法が異なるので、ファイルをダウンロードする時は Content-Type ヘッダと Content-Disposition ヘッダの両方を正しく設定しておくべきなのですが、質問のコードでは Content-Type ヘッダは正しく設定してあるようなので、IE, Edge, Chrome では少なくとも拡張子は .xls になるはずです。

それが IE 以外では .asp となるということは、何か別の問題がありそうですが。

投稿2022/06/03 02:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meri008

2022/06/03 02:55

回答ありがとうございます。 こちら参考に、無事解決しました!助かりました。 以下、実施内容になります。 ・ ・ ・ 以下のコードを追加して確認。 -----------------------------------------------------------------------------------------------   Response.AddHeader("Content-Disposition", "attachment;filename=test.xls") ----------------------------------------------------------------------------------------------- 実行結果(エラー発生) Microsoft VBScript コンパイル エラー (0x800A0414) Sub プロシージャを呼び出すときに、かっこを使うことはできません。 かっこを使わない記述に修正して実行。 -----------------------------------------------------------------------------------------------  Response.AddHeader "content-disposition", "attachment; filename=test.xls" ----------------------------------------------------------------------------------------------- 実行結果(正常) 無事IE以外のブラウザ(Chrome)でも.xlsで出力されました。 (IEでも変わらず.xlsで出力されることを確認しました)
退会済みユーザー

退会済みユーザー

2022/06/03 03:12

> かっこを使わない記述に修正して実行。 > ----------------------------------------------------------------------------------------------- >  Response.AddHeader "content-disposition", "attachment; filename=test.xls" > ----------------------------------------------------------------------------------------------- > 実行結果(正常) ということは ASP.NET ではなくて、やはりクラシック ASP ですね。 AddHeader (Response オブジェクト) http://asp.style-mods.net/ref_response/addheader.htm
meri008

2022/06/03 04:26

そのようですね。 前提の情報が少ない状態から回答いただきまして、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問