テーブルのフィールド数を数える

AccessVBAの備忘録記事です。テーブルのフィールド数を数えるには?

以下の方法1,2どちらでも可能

方法1

Dim pMyTdf As TableDef, pMyDB As Database
Set pMyDB = CurrentDb
Set pMyTdf = pMyDB.TableDefs("ここにテーブル名")
MsgBox pMyTdf.Fields.Count

ただしクエリなどだとこれはうまく行かない

方法2

Dim pMyCN As New ADODB.Connection, pMyRS As New ADODB.Recordset
Set pMyCN = CurrentProject.Connection
pMyRS.Open "ここにテーブル名", pMyCN, adOpenKeyset, adLockReadOnly
MsgBox pMyRS.Fields.Count
Set pMyRS = Nothing
Set pMyCN = Nothing

pMyRs.Openの行の「ここにテーブル名」の部分は、SQL構文を生成して文字列で放り込んでもOK