0

フィールドが存在しない場合、VBA を使用して mdb ファイルのテーブルにフィールドを追加しようとしています。Access で mdb ファイルを開いて VBA コードを実行すると、問題なく動作します。ただし、Access を閉じると、「エラー 3265: このコレクションにアイテムが見つかりません」というメッセージが表示されます。「With Access.Application.DBEngine(0)(0).TableDefs("Contract")」段階で。

ありがとう!

これが私のコードです:

Sub ResetDB()
Dim nlen As Long

MsgBox ("Select the Access Database using this browse button")
    NewFN = Application.GetOpenFilename(FileFilter:="mdb.Files (*.mdb), *.mdb", Title:="Please select a file")

    If NewFN = False Then
        ' They pressed Cancel
        MsgBox "Try Again if database needs to be reset"
        Application.DisplayAlerts = False
        'ActiveWorkbook.Close
        Application.DisplayAlerts = True
        Exit Sub
    Else
        ActiveWorkbook.Unprotect ("12345")
        Sheets("Version").Visible = True
        Worksheets("Version").Unprotect (strPW)
        Range("Database").Value = NewFN

    'On Error GoTo Failed ' I comment this line just to see where the error is
    ' following line is when the error occurs
        With Access.Application.DBEngine(0)(0).TableDefs("Contract")
        .Fields.Refresh
        nlen = Len(.Fields("Industry_Type").Name)
        If nlen > 0 Then Sheets("Instructions").Range("a1") = 1 ' do nothing
        End
        End With
Failed:
    If Err.Number = 3265 Then Err.Clear ' Error 3265 : Item not found in this collection.
    With Access.Application.DBEngine(0)(0).TableDefs("Contract")
    .Fields.Append .CreateField("Industry_Type", dbLong)
    End With
    End

    End If
End Sub
4

1 に答える 1

1

アクセスが閉じている場合、そのアクセスで作業することはできません。

MDB ファイルを開く必要があります。

Dim db As New Access.Application

db.OpenAccessProject filepath

dbテーブルを取得するための使用:

db.TableDefs....
于 2013-08-07T09:31:13.880 に答える