

よろしくお願いします。
以下のコードで、最終行で「エラーを特定できません」というエラーが表示されるのですが、
エラーが表示される時とされない場合があります。
Dim ObjRS
Set ObjRS = Server.CreateObject("ADODB.Recordset")
Dim StrConn
StrConn = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & StrFileName & ";"
Dim StrSQL
StrSQL = "SELECT * FROM " & EXCEL_DATA_RANGE_NAME
ObjRS.Open StrSQL, StrConn, 0
最初に実行したときは、エラーも表示されず、期待した結果を得ることができるのですが、再度実行したら「エラーを特定できません」となり、
1分ほど時間をおくとまたエラーを起こさずに動作するという感じです。
まったく原因が分からず、困っております。
宜しくお願いいたします。
No.3ベストアンサー
- 回答日時:
>IISの設定は変更できない状況ですので、何とかIISの設定を変更せずに解決したいのですが。
。。設定ができないまでも、権限設定の内容を確認するだけでもできないでしょうか?
後、この件で気になったのは同時アクセスです。
別のユーザが該当ASPに対し、このExcelのロード処理をつかんでしまっている可能性は考えられないですか?
1人でローカルPCでアクセスしている時は、自分だけしかアクセスしないのでこのエラーは発生しませんが、恐らく、実稼働サーバーにリリースして動かした際、複数のユーザが同時にアクセスしますので、Excelファイルが排他ロックかかっている可能性が高いかなと思います。
やはり、私が言っていた権限の話とExcelの排他アクセスに関することが、MSのサイトにも掲載されてました。
http://support.microsoft.com/kb/195951/ja
MSのサイトで掲載されているエラーの現象とまったく同じものが掲載されていますので参考になるのではないかと思います。
なので、サーバーの権限設定と排他制御、この2つがクリアできないと、問題は解決しないと言えると思います。
稼働サーバーの管理者に依頼し、まずはExcelの権限、ファイルの排他状況を確認してみてください。
「Excelファイルが存在するのは間違いない」ということが確認できたのですから、権限設定の確認もできるはずです。
稼働サーバーの設定は避けたいとお思いな気持ちや事情はわかりますが、こういったものは、一度設定してしまえば、二度と変更する必要がないものですので、ビジネス上の政治的な話もあるかもしれませんが、そこはサーバー管理者等と調整して、設定を行えるよう調整すべきです。
エラーの原因が環境にあるのに、環境を変更できません というより、そのアプリやWebサイトを使っている利用者側の立場だったら、動かないアプリ・Webサイトを見せられている方が損害が大きいはずです。
プログラムと環境設定は常にセットで動くものであるということを
肝に銘じて頂きたいです。宜しくお願いします。
この回答への補足
お世話になります。
ご回答ありがとうございます。
やはりIISの設定をしないと解決しなさそうですね。
> エラーの原因が環境にあるのに、環境を変更できません というより、
> そのアプリやWebサイトを使っている利用者側の立場だったら、
> 動かないアプリ・Webサイトを見せられている方が損害が大きいはずです。
まさにその通りです。
とりあえず、管理者と相談してみます。
ありがとうございました。
No.2
- 回答日時:
補足ありがとうございます。
明らかにExcelファイルが開けないエラーのようですね。
気になったのですが、
Request.ServerVariables("APPL_PHYSICAL_PATH") & StrFileName に
該当する場所に、Webサーバー上、該当のExcelファイルは
存在していますよね?
試しに、データが入っているExcelファイルを
上記ASPを動かしているフォルダに移動し、接続文字列の定義を
StrConn = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &_
Server.MapPath(StrFileName) & ";"
にするとどうなりますか?
また、このExcelファイルのアクセス権限も気になります。
[IUSER_マシン名] というユーザに対して、権限を与えてみてください。
それでも駄目なら別の原因が考えられますので、また質問して頂いても宜しいでしょうか?
宜しくお願いします。
参考URL:http://www.ken3.org/asp/backno/asp053.html
この回答への補足
お世話になります。
Request.ServerVariables("APPL_PHYSICAL_PATH") & StrFileName
には確実にファイルは存在しています。
StrConn = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &_
Server.MapPath(StrFileName) & ";"
として、ファイルを移動しても、挙動は変わらない状況です。
IISの設定は変更できない状況ですので、何とかIISの設定を変更せずに解決したいのですが。。。
宜しくお願い致します。
No.1
- 回答日時:
少し試して頂きたいのですが、
On Error Resume Next
を処理の前に宣言し、Err.Number と Err.Description をみて、
どのようなエラーを返しているか具体的に見てみたいです。
下記のような感じで、実行した結果、どうなるか教えてください。
On Error Resume Next
Dim ObjRS
Set ObjRS = Server.CreateObject("ADODB.Recordset")
Dim StrConn
StrConn = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & StrFileName & ";"
Dim StrSQL
StrSQL = "SELECT * FROM " & EXCEL_DATA_RANGE_NAME
ObjRS.Open StrSQL, StrConn, 0
If Err.Number <> 0 Then
Response.Write("エラー詳細<br>")
Response.Write(Err.Description)
Response.End
End If
宜しくお願いします。
この回答への補足
お世話になります。
ご回答ありがとうございます。
ご指示を頂いたように実行してみましたが、
ObjRS.Open StrSQL, StrConn, 0
の部分で処理が完全に中断してしまうようで、
If Err.Number <> 0 Then
以下が実行されません。
その時に表示されるエラーメッセージは、
「Error-2147467259:エラーを特定できませんProvider」
On Error Resume Next
を省略したときのエラーメッセージは、
「Provider エラー '80004005'
エラーを特定できません 」
となります。
エラーを起こしてから、次に正常に実行されるまでの間隔は約43秒で、
正常に実行されてから大体70秒以内に再度実行するとエラーになる、
という感じです。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) Excel起動時にエラーダイアログが表示される 3 2022/07/28 19:52
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Access エラー 3051
-
ErrorDocument 401
-
ダウンロードさせるには?
-
Excel VBA シートを指定して...
-
他のパソコンで自作のマクロを...
-
Refreshで落ちる
-
FFFTPでサーバに新規フォルダが...
-
ASP.NETで、別サーバーへファイ...
-
【Excel VBA】PDFを作成して,...
-
複数のファイルを同時検索し、...
-
スマートフォン用の写真管理ソ...
-
バッチファイルで古いフォルダ...
-
複数テキストファイルをエクセ...
-
バッチファイルが作成できない
-
auoneのwebメールを使っている...
-
Accessでフォルダを自動生成す...
-
『参照先』って何て言いますか?
-
テキストファイルの文字色に色...
-
ファイル保存時のショートカッ...
-
JSP・Servletでファイル入出力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】PDFを作成して,...
-
Microsoft Access エラー 3051
-
VBAでファイルパスが長すぎてコ...
-
FFFTPでサーバに新規フォルダが...
-
OCXのライセンス
-
エクセルVBA フォームを開く時...
-
Refreshで落ちる
-
VBAでFTPファイル転送がうまく...
-
ブラウザでASPファイルを開こう...
-
web.configファイル内、valueに...
-
ASP.NETで、別サーバーへファイ...
-
Excel VBA シートを指定して...
-
VBSで指定したフォルダにファイ...
-
BASP21のアップロードについて
-
フォルダ参照ではなくファイル...
-
ExcelVBAで、隠しフォルダにあ...
-
Adobe Reader について
-
VB2005 で encoding="Shift_JIS...
-
処理を別ファイルに書きたいん...
-
【python】pandasでExcel(...
おすすめ情報