Classic ASPテストページです。
情報が古いので参考程度に読んだりテストしてみてください。
共有サーバーなので、処理に時間がかかるとタイムアウトやアクセスが集中すると落ちている時がありますがご勘弁を・・・

三流君(TOP) /ASPで遊ぶ /ASP記事一覧を見る

分類: [Form関係] /DB系ADOを使い( [Mdb接続] [CSV接続] [Excel接続]) /[ASPでTextFileを操作] /[VBScript関数ほか]

ADOでExcel(*.xls)に接続 [Sheet1$]で列名無しテスト

test084-1.asp
ASPからADOを使用してExcel(*.xls)に接続する
Sheet1$でシートにアクセスしてみました。
シートのイメージは、

です。 [test084.xls]←がファイルです

select * from Sheet1$とすると
Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14'
[Microsoft][ODBC Excel Driver] FROM 句の構文エラーです。
/cgi-bin/test/test084-1.asp, 行 36
と、エラーとなってしまう・・(涙)何でと思いつつ
それなら、select * from [Sheet1$]と[]で囲うのが正解。
作った、使った接続文字列は
Con = Driver={Microsoft Excel Driver (*.xls)};DBQ=d:\users\ken3_org\Cgi-bin\test\test084.xls;
作った、使ったSQL文字列は
strSQL = select * from [Sheet1$]
Rs.Open strSQL, Con, 0で、レコードセットを作成しました
列の項目名がなかったら?F2F3F4
c2どうなるの?
b3のセルはここ
a4のせるはここ
d5に1つ端っこ
名前三流君
住所東京都の田舎町
好きな球団横浜ベイスターズ
名前範囲も付けてませんEND?

列名無しで接続できるが、先頭行が強引にフィールド名となってしまう。
B3のセルに対して、アクセスするには、
先頭行(A1やB1,C1,D1)がフィールド名となっているので、
Open時のカーソルは、A2,B2,C2と2行目からのスタートなので、
3行目に行くために、.MoveNextで1行空読みして、
Rs.Fields(1)でOKかなぁ。
Rs.Open strSQL, Con, 0
Rs.MoveNext
Rs.Fields(1)は[b3のセルはここ]です
Rs.MoveNext
現在のRs.Fields(0)は[a4のせるはここ]です


ADOでExcelを使用したサンプル(ソースの紹介)

詳細解説は[http:/asp/backno/asp084.html]を見てください
下記、/cgi-bin/test/test084-1.aspのソース(中身)です

ADOでExcel を 使った ソースコードを紹介する

表示色の説明:ASP VBScriptは <% 〜 %>
キーワードはADOでExcel です。 <%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>ADOでExcel(*.xls)に接続 [Sheet1$]で列名無しテスト</title> </head> <body> <h1>ADOでExcel(*.xls)に接続 [Sheet1$]で列名無しテスト</h1> test084-1.asp<br> ASPからADOを使用してExcel(*.xls)に接続する<br> Sheet1$でシートにアクセスしてみました。<br> シートのイメージは、<br> <img src="http://www.ken3.org/backno/gif/asp084-01.gif"><br> です。 [<a Href="test084.xls" TARGET="_blank">test084.xls</a>]←がファイルです<br> <br> で<b>select * from Sheet1$</b>とすると<br> Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14' <br> [Microsoft][ODBC Excel Driver] FROM 句の構文エラーです。 <br> /cgi-bin/test/test084-1.asp, 行 36 <br> と、<b>エラー</b>となってしまう・・(涙)何でと思いつつ<br> それなら、<b>select * from [Sheet1$]</b>と[]で囲うのが正解。 <hr> <% 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") '接続文字 Con = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _ Server.MapPath("test084.xls") & ";" Response.Write "作った、使った接続文字列は<br>" Response.Write "<CODE>Con = <b>" & Con & "</b></CODE><hr>" 'SQL文 Sheet1$として、シートのみ指定してみます strSQL = "select * from [Sheet1$]" Response.Write "作った、使ったSQL文字列は<br>" Response.Write "<CODE>strSQL = <b>" & strSQL & "</b></CODE><hr>" '接続文字列、SQLを渡して、レコードセットを開く Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly Response.Write "<CODE>Rs.Open strSQL, Con, 0</CODE>" Response.Write "で、レコードセットを作成しました<hr>" 'テーブルでデータを表示する Response.Write "<TABLE border='1'>" '項目名の表示(シートしか指定してないのに?) Response.Write "<TR>" For Each FldA In Rs.Fields 'フィールド分ループする Response.Write "<TH>" & FldA.Name & "</TH>" '.Nameでフィールド名を表示 Next Response.Write "</TR>" 'レコードが終了するまでループ(シートしか指定してないけど大丈夫?) Do While Rs.EOF = False Response.Write "<TR>" For Each FldA In Rs.Fields 'フィールド分ループする Response.Write "<TD>" & FldA.Value & "</TD>" '.Valueで値を表示 Next Response.Write "</TR>" Rs.MoveNext '次のレコードへ移動 Loop Response.Write "</TABLE>" 'テーブル終了 Rs.Close %> <hr> 列名無しで接続できるが、先頭行が強引にフィールド名となってしまう。<br> B3のセルに対して、アクセスするには、<br> 先頭行(A1やB1,C1,D1)がフィールド名となっているので、<br> Open時のカーソルは、A2,B2,C2と2行目からのスタートなので、<br> 3行目に行くために、.MoveNextで1行空読みして、<br> Rs.Fields(1)でOKかなぁ。<hr> <% 'レコードセットを再オープンする Response.Write "Rs.Open strSQL, Con, 0<br>" Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly Response.Write "Rs.MoveNext<br>" Rs.MoveNext '1行飛ばす Response.Write "Rs.Fields(1)は<big>[" & Rs.Fields(1) & "]</big>です<br>" Response.Write "Rs.MoveNext<br>" Rs.MoveNext '1行飛ばす Response.Write "現在のRs.Fields(0)は<big>[" & Rs.Fields(0) & "]</big>です" Rs.Close 'クローズする %> <hr> </body> </html>

広告

リンク広告
  1. --[Windows 仮想メモリ ページファイルの移動や設定]
  2. --[ Windows7 OSのフルバックアップ システムイメージバックアップ]
  3. --[Access コンボボックスを使ってみた]

Googleで関連項目を検索する

[キーワード:ADOでExcel] と サンプル|解説|Dim|Set で検索
↓で検索して他のページも確認してみてください。

Google

あれ?私のページが検索に載ってない(笑)一度お試しを(私のページに、また戻ってきてね(爆))

ASPでExcel(*.xls)を使用する
(ADOで*.xlsと接続, xlsファイルの作成など)

テスト実行とサンプルソース



ASP系、ADO使用、Excel(*.xls)接続、SQL発行、メルマガ解説リンク

[No.53 ADOでExcelファイル(*.xls)とやっと接続できた(ほっ)]
[No.54 ADOでSQL Select * INTO文発行でExcel(*.xls)を作成する]
[No.56 Excel(*.xls)とADOで接続、.Addnewしてみた]
[No.57 Excelグラフ付の雛形シートにASPからADOを使用してデータセット]
[No.59 結果をExcelで返すならresponse.ContentType=application/vnd.ms-excel]

[No.79 文字列9-30をExcelに移すと日付と誤解される・・・]
[No.84 ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ]
[No.85 ADOでExcel(*.xls)に接続 .GetRowsで全件読み込んでみた]
[No.103 ADOでExcel(*.xls)に接続 指定したセルを更新する ]


[Topへ戻る] −−>[ASP系のTOPへ戻る] −−>[記事一覧を見る]

リンク 三流君 ASP系 の 解説を項目ごとにまとめてみました

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く



VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。

その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[永遠の下書き日記?]← 恥ずかしいのであまり載せてないけど・・・
[ひとりで掲示板?] ←一人で?掲示板?ぉぃぉぃ


[Topへ戻る] −−>[ASP系のTOPへ戻る] −−>[記事一覧を見る]

現在時刻は、2017/09/21 1:26:42です。