「Accessファイルチェッククラス」の編集履歴(バックアップ)一覧はこちら
Accessファイルチェッククラス - (2013/05/09 (木) 23:52:23) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
**Accessファイルチェッククラス
***機能
- 指定ファイルが使用中のAccessで操作可能なファイルかを確認する
- 指定MDBに指定の名前のテーブルが存在しているか確認する
- 指定MDBの指定の名前のテーブルに1件以上レコードが存在しているかを確認する
***メモ
このクラスのプロシージャは、以下の標準モジュールのプロシージャのセットです。
- Accessファイル操作可否
- 指定テーブルの有無
- 指定テーブルのレコードの有無
*** ソース
Option Compare Database
Option Explicit
' ACC_CheckAccessFile
' VBAでMDBやACCDBを操作する際に行う簡単なチェックを行う
' 実行環境にはDAOの参照設定が必要です
' IsAccessDBFile
' 指定のファイル(含フルパス)が使用しているAccessのバージョンで開くことが可能なDBファイルかを確認する
' ①Accessのバージョンが2007以降では拡張子が「mdb」または「accdb」の実在するファイルのみTRUE
' ②Accessのバージョンが2003以前では拡張子が「mdb」の実在するファイルのみTRUE
' 上記①②以外はすべてFALSE
' その他のAccessに関連する拡張子のファイルは除外とします
' 引数:あり
' iFilePath :String :ファイル(含フルパス)
' 戻り値:あり
' Boolean :確認結果
Public Function IsAccessDBFile(ByVal iFilePath As String) As Boolean
Dim file As String
Dim versionNumber As Double
Dim result As Boolean
' 返却値の初期化
result = False
' バージョンの取得
versionNumber = Application.Version
' ファイルの実在確認
file = Dir(iFilePath, vbNormal)
If file <> "" And Len(iFilePath) > 0 Then
' ファイルが実在する場合バージョンにより判断方法を分ける
If versionNumber > 11 Then
' Accessのバージョンが2007以降の場合
If Right(file, 4) = ".mdb" Or Right(file, 6) = ".accdb" Then
' 拡張子が「mdb」または「accdb」の場合、返却値をTRUEにする
result = True
End If
Else
' Accessのバージョンが2003以前の場合
If Right(file, 4) = ".mdb" Then
' 拡張子が「mdb」の場合、返却値をTRUEにする
result = True
End If
End If
End If
IsAccessDBFile = result
End Function
' HasSelectedTable
' 指定MDBに指定テーブルが存在しているかを確認する
' 引数:あり
' iDB : DAO.Database :検索先のMDB
' iSelectedTableName : String :検索対象のテーブル名
' 戻り値:あり
' Boolean : 検索対象のテーブルの有無(テーブルが存在していた場合TRUE)
Public Function HasSelectedTable(ByVal iDB As DAO.Database, ByVal iSelectedTableName As String) As Boolean
Dim dbTblDef As DAO.TableDef
Dim result As Boolean
' 返却値の初期化
result = False
' 指定MDBのすべてのテーブルに対し処理を行う
For Each dbTblDef In iDB.TableDefs
' 検索対象のテーブルが存在していれば、返却値をTRUEにする
If dbTblDef.Name = iSelectedTableName Then
result = True
Exit For
End If
Next
HasSelectedTable = result
End Function
' HasRecordInSelectedTable
' 指定MDBの指定テーブルがレコードを1件以上保持しているかを確認する
' 事前に指定テーブル自体の有無は確認しておくこと
' 引数:あり
' iDB : DAO.Database :検索先のMDB
' iSelectedTableName : String :検索対象のテーブル名
' 戻り値:あり
' Boolean : 検索対象のレコードの有無(レコードが存在していた場合TRUE)
Public Function HasRecordInSelectedTable(ByVal iDB As DAO.Database, ByVal iSelectedTableName As String) As Boolean
Dim rsObj As DAO.Recordset
Dim result As Boolean
' 返却値の初期化
result = False
' 確認時点の指定テーブルのレコードを取得
Set rsObj = iDB.OpenRecordset(iSelectedTableName, dbOpenSnapshot)
If rsObj.RecordCount > 0 Then
result = True
End If
Set rsObj = Nothing
HasRecordInSelectedTable = result
End Function
[[トップ]]
**Accessファイルチェッククラス
***機能
- 指定ファイルが使用中のAccessで操作可能なファイルかを確認する
- 指定MDBに指定の名前のテーブルが存在しているか確認する
- 指定MDBの指定の名前のテーブルに1件以上レコードが存在しているかを確認する
***メモ
このクラスのプロシージャは、以下の標準モジュールのプロシージャのセットです。
- Accessファイル操作可否
- 指定テーブルの有無
- 指定テーブルのレコードの有無
*** ソース
Option Compare Database
Option Explicit
' ACC_CheckAccessFile
' VBAでMDBやACCDBを操作する際に行う簡単なチェックを行う
' 実行環境にはDAOの参照設定が必要です
' IsAccessDBFile
' 指定のファイル(含フルパス)が使用しているAccessのバージョンで開くことが可能なDBファイルかを確認する
' ①Accessのバージョンが2007以降では拡張子が「mdb」または「accdb」の実在するファイルのみTRUE
' ②Accessのバージョンが2003以前では拡張子が「mdb」の実在するファイルのみTRUE
' 上記①②以外はすべてFALSE
' その他のAccessに関連する拡張子のファイルは除外とします
' 引数:あり
' iFilePath :String :ファイル(含フルパス)
' 戻り値:あり
' Boolean :確認結果
Public Function IsAccessDBFile(ByVal iFilePath As String) As Boolean
Dim file As String
Dim versionNumber As Double
Dim result As Boolean
' 返却値の初期化
result = False
' バージョンの取得
versionNumber = Application.Version
' ファイルの実在確認
file = Dir(iFilePath, vbNormal)
If file <> "" And Len(iFilePath) > 0 Then
' ファイルが実在する場合バージョンにより判断方法を分ける
If versionNumber > 11 Then
' Accessのバージョンが2007以降の場合
If Right(file, 4) = ".mdb" Or Right(file, 6) = ".accdb" Then
' 拡張子が「mdb」または「accdb」の場合、返却値をTRUEにする
result = True
End If
Else
' Accessのバージョンが2003以前の場合
If Right(file, 4) = ".mdb" Then
' 拡張子が「mdb」の場合、返却値をTRUEにする
result = True
End If
End If
End If
IsAccessDBFile = result
End Function
' HasSelectedTable
' 指定MDBに指定テーブルが存在しているかを確認する
' 引数:あり
' iDB : DAO.Database :検索先のMDB
' iSelectedTableName : String :検索対象のテーブル名
' 戻り値:あり
' Boolean : 検索対象のテーブルの有無(テーブルが存在していた場合TRUE)
Public Function HasSelectedTable(ByVal iDB As DAO.Database, ByVal iSelectedTableName As String) As Boolean
Dim dbTblDef As DAO.TableDef
Dim result As Boolean
' 返却値の初期化
result = False
' 指定MDBのすべてのテーブルに対し処理を行う
For Each dbTblDef In iDB.TableDefs
' 検索対象のテーブルが存在していれば、返却値をTRUEにする
If dbTblDef.Name = iSelectedTableName Then
result = True
Exit For
End If
Next
HasSelectedTable = result
End Function
' HasRecordInSelectedTable
' 指定MDBの指定テーブルがレコードを1件以上保持しているかを確認する
' 事前に指定テーブル自体の有無は確認しておくこと
' 引数:あり
' iDB : DAO.Database :検索先のMDB
' iSelectedTableName : String :検索対象のテーブル名
' 戻り値:あり
' Boolean : 検索対象のレコードの有無(レコードが存在していた場合TRUE)
Public Function HasRecordInSelectedTable(ByVal iDB As DAO.Database, ByVal iSelectedTableName As String) As Boolean
Dim rsObj As DAO.Recordset
Dim result As Boolean
' 返却値の初期化
result = False
' 確認時点の指定テーブルのレコードを取得
Set rsObj = iDB.OpenRecordset(iSelectedTableName, dbOpenSnapshot)
If rsObj.RecordCount > 0 Then
result = True
End If
Set rsObj = Nothing
HasRecordInSelectedTable = result
End Function
[[トップ]]