6

あなたのサイトをありがとう。素晴らしい情報。

簡単に言えば、Outlook (2007) から次のコードを実行しようとしていますが、Excel でも失敗します。INSIDE Accessで大活躍!

Sub Test

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Const dbPath As String = "C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb"
    On Error Resume Next
    Set db = DAO.OpenDatabase(dbPath)
    'Set rs = db.OpenRecordset("customers")

    Debug.Print Err.Number, Err.Description

End Sub

3343 認識されないデータベース形式 'C:\Users\e574651.GLOBAL\Documents\Northwind 2007.accdb'.

ADO を使用して 1 日中このデータベースにアクセスできます (しゃれは意図していません)。問題は次の ADO ステートメントにあると思われます。

ADOConn.Provider = "Microsoft.ACE.OLEDB.12.0"

DAO を使用してこの機能を提供するにはどうすればよいですか?

VBA 設定に DAO 3.6 ライブラリへの参照を含めました。他の Microsoft 12.0 ライブラリ リファレンスを含めたので、何かを壊したり、何かを省略したりしました。

どんな援助でも大歓迎です。

ありがとう!

4

2 に答える 2

7

最新のDAOライブラリの形式は次のとおりです。

Microsoft Office x.x Access Database Engine Object Library

したがって、3.6リファレンスを削除し、より新しいライブラリを使用してください。次に、例:

Sub XLAccess()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim sDb As String
Dim sSQL As String
Dim qdf As QueryDef

    sDb = "Z:\Docs\Test.accdb"

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(sDb)

    ''A stored query would be better
    sSQL = "Parameters p1 Text, p2 Datetime; " _
    & "INSERT INTO Table1 (AText,ADate) Values ([p1],[p2])"

    Set qdf = db.CreateQueryDef("", sSQL)

    qdf.Parameters!p1 = "ABC"
    qdf.Parameters!p2 = #1/17/2013#
    qdf.Execute dbFailOnError
    Debug.Print qdf.RecordsAffected
End Sub
于 2013-03-16T12:56:02.943 に答える
2

参照には、より新しいバージョンまたは最新のアクセス データベースを使用してください。

例: Visual Basics ウィンドウ内 = [ツール] > [参照設定] > [ Microsoft Office 14.0 Access データベース エンジン オブジェクト ライブラリ] に移動します。

次に、以下を使用してデータベースを開きます。

Dim database_data As DAO.Database
Dim rsData As DAO.Recordset
Dim field_index As Integer

Set database_data = DAO.OpenDatabase("demo1.accdb")

場合によっては、データベース ファイルへのフル パスを入力する必要がある場合もあります (例: "C:\User\Documents\projects\demo1.accdb")。

于 2018-02-27T10:48:18.207 に答える