LoginSignup
1
0

More than 1 year has passed since last update.

Access VBA Get CurrentTableDef 現在開いているテーブルを取得

Last updated at Posted at 2016-06-11

できそうでなかなかないのですがようやくここまで行きました。
なんですって?フォームを使えと?
そんな面倒くさいものは使いません。ばかばかしい。
ただし条件が2つあります

  • DAOを参照設定していること
  • 現在開いているテーブルは一つだけとします。

現在開いているテーブルの名前を取得するマクロです

GetAccessCurrentTabledef
Sub GetacCurrentTableDef()
'QIIQ from QIITA
'For Access VBA
Dim Db As DAO.Database: Set Db = CurrentDb
Dim tdf As TableDef, tdTgt() As TableDef
Dim cnt As Long
cnt = 0
For Each tdf In Db.TableDefs
If tdf.Attributes = 0 Then
If SysCmd(acSysCmdGetObjectState, acTable, tdf.Name) > 0 Then
cnt = cnt + 1
ReDim Preserve tdTgt(1 To cnt)
Set tdTgt(cnt) = tdf
End If
End If
Next
If cnt >= 1 Then Set tdf = tdTgt(1): Debug.Print tdf.Name
End Sub

For Eachで回すとシステムのテーブルを拾って面倒なので、アトリビュートで0を選択します。
配列に入れ込み、最初の一つだけを取得するようにしています。
カウンタ(CNT)を回すことで複数のものを開いていても一応取得します。
カレントは一つだけなので一つです。
複数開いていても最初にFor Eachで拾ったテーブルがカレントになりますが、最初から1個だけと言ってますよね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0