• ベストアンサー

Accessのバージョンの判別方法

VisualBasic6.0でAccessのバージョンを判別する方法を調べたのですがわかりません。 どなたかわかる方ご教授願います。 例をのせていただけるとありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

コピペですが、 Function FindVersion(strDbPath As String) As String Dim dbs As Database Dim strVersion As String Const conPropertyNotFound As Integer = 3270 On Error GoTo Err_FindVersion ' Open the database and return a reference to it. Set dbs = OpenDatabase(strDbPath) ' Check the value of the AccessVersion property. strVersion = dbs.Properties("AccessVersion") Debug.Print strVersion ' Return the two leftmost digits of the value of ' the AccessVersion property. strVersion = Left(strVersion, 2) ' Based on the value of the AccessVersion property, ' return a string indicating the version of Microsoft Access ' used to create or open the database. Select Case strVersion Case "02" FindVersion = "2.0" Case "06" FindVersion = "95" Case "07" FindVersion = "97" Case "08" FindVersion = "2000" Case "09" FindVersion = "2002" End Select Exit_FindVersion: On Error Resume Next dbs.Close Set dbs = Nothing Exit Function Err_FindVersion: If Err.Number = conPropertyNotFound Then MsgBox "This database hasn't previously been opened " & _ "with Microsoft Access." Else MsgBox "Error: " & Err & vbCrLf & Err.Description End If Resume Exit_FindVersion End Function DAOの参照設定が必要です。

参考URL:
http://bytes.com/forum/thread201416.html

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

(1)No.2の方の方法をVB6から実行する方法 Dim A, V Set A= CreateObject("Access.Application") V = A.Version '★ V にバージョンが入る A.Quit Set A= Nothing ※Accessが一時的に起動する (2)レジストリから調べる方法 Dim A, B, C, D, E, V Set A = CreateObject("WbemScripting.SWbemLocator") Set B = A.ConnectServer(".", "\root\default") Set C = B.Get("StdRegProv") C.GetStringValue &H80000000, "Access.Application\CurVer", "", D E = Split(D, ".") V = CLng(E(UBound(E))) '★ V にバージョンが入る ※Accessは起動しない いずれもエラー処理はハンドリングしていません。つまり、 AccessをインストールしていないPCで実行すると障害が発生します。 尚、複数のバージョンのAccessをインストールしている場合、後から インストールした方のバージョンが返ります。バージョンの最大値を 求める場合は別の方法になります。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Moduleで Sub test04() MsgBox Application.Version End Sub アクセスの中に入らないとわからないかも入れないが、そのコードは WEBに多数ある。 アクセスを開かないで知りたいとか特殊なことかな。

関連するQ&A

専門家に質問してみよう