三流君のソースコード置き場

三流プログラマーが作成したコードが置いてあります。ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)※古くさいコードが多いです・・・



asp084.html 三流君ASP:ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ

元の三流解説は、
三流君ASP:ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ADOでExcel(*.xls)に接続 ソースコード

<%@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>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test084-1.asp実行する


↑コードの三流解説は、
三流君ASP:ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ
を見て、笑ってやってください。



ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)



Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)