FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


テーブルのフィールド名とデータ型を出力したい

学校の友達との会話のネタに少しでもなるようにと思って、長女の為に
3DSと「飛び出せどうぶつの森」を購入してあげたのが数か月前…今更( ̄∇ ̄;)!?

少し遊ばせてもらっていたが、あまりにもまったりしたゲームだった為、
なんとなく、「モンハン4」とやらを購入… これも、今更( ̄∇ ̄;)!?

すっかりハマってしまい、娘のDSを占有してしまう勢いだったため、
自分専用に3DSを購入したGenzoです。

ちなみにリアルで友達もいない上、オンラインでのトラブルが怖く
未だにソロでやっているヘタレハンターなのは内緒です。

そんな訳で、今回の無駄コードはこれ!!
テーブルのフィールド名なんかを、エクセルに出力しちゃいなよ!」コードです。

え?紹介文の内容と作成するコードの関連性?

何を期待しているんですか…?
そんなものはありませんよ。 ψ(`∇´)ψ



ということで、今回の無駄コードを作るにいたった経緯がはっきりしないまま、
本題に行きたいと思います。

データベースを作成したけれども…テーブルいっぱい作っちゃって、
その中のフィールドを管理したいんだけど…いちいち引っ張ってくるのも
面倒だな~~ と思っている、そこのわたしアナタにぴったり!!
…かもしれないコードです。

本当に使う価値や場面があるかどうかは、\(・_\)(/_・)/コッチニオイトイテ…
早速いってみましょう。

下記のコードを標準モジュールにペタッっと貼り付けてください。
Public Sub GetTableInfo()

Dim db As DAO.Database 'データベース用変数
Dim rs As DAO.Recordset 'レコードセット用変数

Dim xls As Object 'エクセルオブジェクト用変数
Dim i As Long '行番号用変数

Dim TableLoop As TableDef 'テーブル情報用変数
Dim strTname As String 'テーブル名用変数
Dim fld As Field 'フィールド用変数
Dim myFldType As String 'データ型用変数

Set db = CurrentDb 'データベースのセット

'Excelの準備
Set xls = CreateObject("Excel.Application")
xls.Workbooks.Add

For Each TableLoop In db.TableDefs '各テーブルのループ処理

strTname = TableLoop.Name 'テーブル名取得

If Left(strTname, 2) <> "MS" Then
'Accessが自動的に作成するテーブル(MSsys*****)は除いて処理

Set rs = db.OpenRecordset(strTname) 'テーブルをセット

i = 1

With xls
.Sheets.Add 'エクセルにシートの追加

For Each fld In rs.Fields 'テーブルのフィールドをループ
.Cells(i, 1) = fld.Name '1列目にフィールド名を出力

Select Case fld.Type 'データ型の取得
Case dbBoolean
myFldType = "True/False型"
Case dbByte
myFldType = "数値(128迄)"
Case dbInteger
myFldType = "数値(32,767迄)"
Case dbLong
myFldType = "数値"
Case dbCurrency
myFldType = "数値(小数点)"
Case dbSingle
myFldType = "単精度少数"
Case dbDouble
myFldType = "倍精度少数"
Case dbDate
myFldType = "日付"
Case dbText
myFldType = "テキスト"
Case dbMemo
myFldType = "メモ"
Case Else
myFldType = "その他のタイプ"
End Select

.Cells(i, 2) = myFldType '2列目にデータ型を出力

i = i + 1

Next fld

rs.Close
.ActiveSheet.Name = strTname 'シート名にテーブル名を指定

End With
End If

Next TableLoop '次のテーブルに移動

xls.Visible = True 'エクセルの表示

Set rs = Nothing
If Not db Is Nothing Then db.Close: Set db = Nothing

End Sub
アイも変わらず…いや…は変わってしまったのかもしれませんが…(T-T)
無駄に長いコードとなっております。

ちょこちょことコメントを記載しているので、特に説明は必要ないと思われますが、
やっている事は、データベース内のテーブルを1つ1つ開いて、開いたテーブルの
フィールド名とデータ型を、また1つ1つループしてエクセルに書き出しているだけの
こと…です…。 はい…ただ それだけの事です…(-。-) ボソッ

ちなみに、データ型の「dbCurrency」ですが、本当は通貨型が正解です。

ただ、小数点以下4桁までの計算をする場合は、「通貨型」を指定した方が
計算しやすいということで、「自分の中」では小数点対応の数値型と勝手に
解釈をしていますので、そこは適宜変更してもらえればよいかな…と。
(自分の備忘録だから、自分用で作るもん…( ̄ ^  ̄) !)

ということで、上記のコードを利用する場合は、
イミディエイト画面で、
GetTableInfo
と入力しちゃってくれれば、自動的にエクセルが立ち上がり、
シート名をテーブル名にして、各フィールドの一覧を出力してくれます。

なお、今回のコードでは、エクセル出力の際に縦に並べてますが、
横に並べたい時は、35行目と62行目を下記の様に入れ替えてもらえればOKっぽいです。
.Cells(1, i) = fld.Name  '1行目にフィールド名を出力
.Cells(i, 2) = myFldType  '2行目にフィールド名を出力
.cell内の引数の行と列を入れ替えただけですね(;^_^A アセアセ

エクセルにインポート用のデータを登録しておいて、一括で取り込みたい…
とか言う時に、もしかしたら使えるかも…かも…かも…( ´・ω・`)ショボーン

そんな淡く無駄な期待をしつつ、久しぶりのブログアップのご挨拶に返さえていただきます。

また…今後共…皆々様の…(長くなりそうなので…ここまで…。)

ではでは!(・・)/ シュタ

P.S
ちなみに、アメリカ独立記念日の今日は長女の誕生日。
Happy Birthday 愛しのバカ娘(⌒∇⌒)/♪
From バカ親より
↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

No title

私のプログのリンクリストにNewマークがついていたので、さっそく来てみました^^

あっ、先日、プログへのコメント、ありがとうございました。

相変わらずの語り口で楽しませていただきました。

「どうぶつの森」、そういえば娘が小学生のころ、ハマってました。

いろいろ集めるのが楽しいのですかね。

ちなみに今はももクログッスを集めるのにハマっているようです。
どうも収集癖のオタ気質みたいてす^^;

Re: No title

> 私のプログのリンクリストにNewマークがついていたので、さっそく来てみました^^
いつもありがとうございます。 気にかけて頂けいるだけで幸せいっぱいです…(^^ゞ


> あっ、先日、プログへのコメント、ありがとうございました。
ここ2年程、ブログの更新はほぼなかったのですが、Accessだけは触っていて
Hatenaさんのブログは毎回お世話になりっぱなし…です。
お礼がいいたくて、思わずコメントしてしまいました。

> 相変わらずの語り口で楽しませていただきました。
読みづらく、意味の無い脱線ばっかりする語り口ですが、
自分のスタイルとして、なんとか続けて行きたいところです。
少しでも楽しんで頂けていれば幸いです。

> 「どうぶつの森」、そういえば娘が小学生のころ、ハマってました。
>
> いろいろ集めるのが楽しいのですかね。
>
> ちなみに今はももクログッスを集めるのにハマっているようです。
> どうも収集癖のオタ気質みたいてす^^;

先日の娘の誕生日に、娘がおじ(自分から見たら従兄弟ですね)に
何か頼んでいると思ったら、「モンハン4」買ってもらってました…。
なぜか、娘とハンターライフ… (…やっぱり今更( ̄∇ ̄;)!?)

ゲーム好きは、遺伝するようです o(〃^▽^〃)oあははっ

Author's Profile ~自己紹介~

Genzo

Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

Access2Genzo内で検索

Category ~かてごりー~

Comments Tree ~こめんとつりー~


Link ~りんく~

ブロとも申請フォーム

Counter ~かうんた~

Since 2010/08/01:

Online:

タグクラウド

最新トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。