ADODBを使用してExcelファイルへの接続を開くことをテストする簡単なプログラムがあります。これは VBScript を使用した ASP Classic です。コードは次のとおりです。
<%@ Language="VBScript" %>
<% Response.buffer = true %>
<html>
<body>
<%
'Name of the excel file
exceldb="AW_Test.xls"
excel_file_name=Server.MapPath(exceldb)
response.write(excel_file_name)
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; DBQ=" &excel_file_name & ";"
cn.Close
Set cn=Nothing
Response.Write("All is good in the world...")
%>
</body>
</html>
この構成で実行しようとすると:
- ウィンドウズ7 64ビット
- IIS7
- 32 ビット モードのアプリケーション プール
- ルート ディレクトリ内のファイル
- ローカル ホスト [http://localhost/adotest.asp] で実行
次の結果が得られます。
C:\inetpub\wwwroot\AW_Test.xls
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
/adotest2.asp, line 13
ただし、この構成の同じマシンで:
- XP モードの仮想 PC
- IIS6
- ルート ディレクトリ内のファイル
- ローカル ホスト [http://localhost/adotest.asp] で実行
次の結果が得られます。
c:\inetpub\wwwroot\AW_Test.xls
All is good in the world...
私が確認した/試したこと:
- 確認済みのアクセス許可 (これはルート ディレクトリであることに注意してください)
代わりにジェットエンジンを使用してみました
cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\WWWRoot\AW_Test.xls;Extended Properties="Excel 8.0;HDR=No"'
エラーが発生しました:
C:\inetpub\wwwroot\AW_Test.xls
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/adotest3.asp, line 13
- 32 ビット モードで実行されているすべてのアプリケーション プールを確認
- 検証済みのドライバーは、データ ソースの SYSWOW 側に存在します
簡単なものが欠けていると確信していますが、試してみることがほとんどありません。ASP Classicなどよりもはるかに優れた方法があることは知っていますが、これでも機能するはずです...
助けていただければ幸いです...