[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.106 ADO Excel接続 シート名を取得したい .OpenSchema(adSchemaTables)

ADO Excel接続 シート名を取得したい .OpenSchema(adSchemaTables)



本文(発行内容)


こんにちは、三流プログラマーのKen3です。

今回は、
ADO Excel接続 で xxxx.xlsのシート名を取得
そんなことにチャレンジしてみたいと思います。

いつもの三流的なアプローチなので、実際はアレンジして使ってください。
※一部でも参考になればいいんだけど・・・

/* * 1.今回のキッカケ */

http://www.ken3.org/asp/backno/asp084.html からの書き込みで、 ---- >今回、はじめてASPでExcel操作をする事になり、右も左もわかりません。 >ひととおり読ませていただきましたが、おしえてください。 >シート名を取得するにはどうすれば良いのでしょうか? ---- と質問をもらう。

/* * 2.人間なってない 問題の解答 */

この質問に対して、 ---- >こんにちは。 >私もシート名の取得方法わからないのですが、 > >ADO テーブル名 取得 >の3つでGoogleを検索すると、 > >ADO と ADOX を組み合わせて SQL Server のテーブル一覧を取得します。 >http://homepage2.nifty.com/inform/vbdb/ado_sqlservertables.htm >なんてのがアリ、 > >SQLServerだとできそうですが、今回はxlsだからダメか・・・ >※ADO関係のプロパティやサイトを探ってみては? > >お力になれずスミマセン。 >他の場所で解決方法が見つかることを願いつつ失礼します。 >※回答を期待されていて待ちぼうけさせると悪いので、 > 短いけどすぐに返信しました・・・ ---- と、とんでもなく不親切な回答を・・・ ※なんとなくできそうなURL紹介して終わり...  社内の後輩だったら二度と質問こない先輩上司って感じで、感じ悪い。

/* * 3.なぜかいつも同じ目線に立てない私 */

性格がプログラムに出てくるとかよく聞くけど、 質問に対する回答で人間ができていないのがよくわかったり。 少し前、VBA系でも↓、 http://www.ken3.org/vba/backno/vba170.html >まるで腰高の内野手みたいな一歩も動く気ない回答だ。 >※サッカーの腰高ディフェンダー、バスケの棒立ち選手って感じかな。 > >いつから自分が嫌いな歳だけ高い(プライドも高い)プログラマーになっちまったんだ、 >動けよコラ、ボール(質問)に真剣に飛びつけよと思いつつ・・・ >(※自分から動けなくなった先輩プログラマーって...イヤだけど自分がなるとは・・) >けっ、プログラムや解説は三流でも、 >できない時の予防線のハリカタは超一流ですね。 >~~~~~~~~~~~~~~~~~~ >(※できないのを認めたくない、プライドだけが高いプログラマーって嫌だよね。 >  見習いたくないけど私みたいな先輩達が一部に居るのも(多い?)のも事実だったり) と、不親切さを書いてたのに直ってないねまったく。 動けよコラ(サンプル作れよ、動き出せよ)

/* * 4.資料を見つけ やっと動き出す */

チョット調べると、 [HOWTO] Visual Basic または VBA から ADO を Excel データで使用する http://support.microsoft.com/default.aspx?scid=kb;JA;257819#top の Excel のデータ ソース構造 (メタデータ) を取得する なんて感じの資料がMicrosoftから見つかる。 テーブル情報のクエリ Set rs = cn.OpenSchema(adSchemaTables) と書いてあり、 >Jet プロバイダは 9 つのフィールドを含むレコードセットを返します。 >そのうち次の 4 つのフィールドにのみ値が入力されています。 > table_name > table_type - "TABLE" または "SYSTEM TABLE" > date_created > date_modified >特定のテーブルの 2 つの日付フィールドには常に同じ値が表示されます。 >この値は "最終更新日" です。つまり、"date_created" は作成日を示して >いない場合があります。 > >ODBC プロバイダも 9 つのフィールドを含むレコードセットを返します。 >そのうち次の 3 つのフィールドにのみ値が入力されています。 > > table_catalog - ブックが存在するフォルダ > table_name > table_type - Jet プロバイダと同じ なんか調べられそうな予感がしたり。

/* * 5..OpenSchema(adSchemaTables)をテストする */

重い腰を上げ(だったら初めから動けよな) .OpenSchema(adSchemaTables)をテストする まずは、接続でしょ? 'ADO DB Connection オブジェクトを作成する、英文そのままじゃん Set db=Server.CreateObject("ADODB.Connection") ↑オブジェクト作成して、 ↓接続文字列でファイルの場所+名前を指定するServer.MapPath("test057.xls") '接続文字列 strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath("test057.xls") & ";" & _ "Extended Properties=Excel 8.0" 'データベース(xls)を開く db.open strCon DBとして、.xlsが開けたから、ここから探ってみます。 'adSchemaTables情報を開く Set Rs = db.OpenSchema(adSchemaTables) で、簡単に開けるみたい。 サンプルでは、手抜きで↓ Set Rs = db.OpenSchema(20) 'オイオイ20とか書くなよ(adSchemaTables=20なので) と、Constとか使わないで直値で20とか書いてるけど。 あとは、レコードをResponse.Writeで表示させるみたいに、 'テーブルでデータを表示する Response.Write "<TABLE border='1'>" '項目名の表示(Rsとレコードセットと同じく扱ってみた) 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>" 'テーブル終了 で、OKみたいです。 ※システム情報が詰まっているレコードにアクセスするイメージかなぁ??? http://www.ken3.org/cgi-bin/test/test106-1.asp で、テスト実行できます。 試してみてください。

/* * 6.終わりの挨拶 </HTML> */

今回は、 .OpenSchema(adSchemaTables) を使って、ADO Excel接続 したシート名を取得してみました。 人間性悪い三流プログラマーのサンプルですが、 何かの参考となれば幸いです。 ASP、VBScript勉強中の三流プログラマーのKen3でした。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

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

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

広告:



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

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



[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


広告: