在Access和访问模块代码中关闭模式窗体

时间:2010-01-06 16:18:47

标签: ms-access extract access-vba

我继承了一个Access数据库,用于在SQL中导入一些数据。 MDB以模式模式打开:不显示Access菜单栏或按钮。我可以使用Visual Studio的“数据连接”工具查看包含内容的表格,但是我看不到模块的代码。

我在这里看过这个question,但那里的答案并不是我真正需要的。有没有办法强制窗体关闭(并访问模块)或提取VBA代码?

[编辑]我正在使用Access 2007,不确定原始开发人员使用的是什么。

3 个答案:

答案 0 :(得分:2)

打开数据库时按住shift键。这将阻止它加载正在运行的自动脚本,并允许您访问表,查询和VBA脚本。

答案 1 :(得分:0)

对于迈克尔·托德回应爱德软思的评论,这是一个相当长的补充或评论。

不是选择启用内容,而是检查启动选项(文件 - >>选项 - >当前数据库 - >显示形式)或(工具 - >启动 - >显示形式) )并删除表格的名称,记下,并确保勾选允许完整菜单(同一页面)。您可能还想按Alt + F11来显示代码,并检查启动代码,最后查看是否有AutoRun宏并重命名。

编辑评论

您不必打开mdb来更改启动表单,例如,可以使用您希望更改的mdb的全名和路径从另一个mdb运行此类代码。

Sub SetStartForm(DBFile As String)
Dim prp As Object
Dim db As Database

Const PROPERTY_NOT_FOUND As Integer = 3270

    Set db = OpenDatabase(DBFile)

    db.Properties("StartupForm") = "(none)" 

    If Err.Number > 0 Then
        If Err.Number = PROPERTY_NOT_FOUND Then
            '' Create the new property, but this is not relevant in this case
         End If
    End If

    db.Close
    Set db = Nothing
    Set prp = Nothing
End Sub

答案 2 :(得分:0)

使用功能关闭按钮:

Private sub cmdClose_Click()
     CloseForm(YourFormName)
End sub

Public Sub CloseForm(ByVal strFormName As String)
    Dim iCounter As Integer
    For Each frm In Forms
        With frm
            If (.Name = strFormName) Then
                iCounter = iCounter + 1
            End If
        End With
    Next
    If (iCounter > 0) Then
        For i = 1 To iCounter
            DoCmd.Close acForm, strFormName, acSaveNo
        Next
    End If
End Sub