【问题标题】:Executing Microsoft Access Autoexec macro when opening Microsoft Excel file打开 Microsoft Excel 文件时执行 Microsoft Access Autoexec 宏
【发布时间】:2018-03-26 15:51:53
【问题描述】:

我在 microsoft access 数据库中有一个 autoexec 宏,每次打开 excel 文件时我都想执行该宏。本质上,我需要打开访问数据库以触发自动执行,然后再次关闭。

我的 excel 文件中已经有一些 VBA 代码可以为单个记录(工作表代码)添加日期/时间戳(工作表代码),但我希望 excel 中有一些功能可以在打开文件时使用以触发此访问过程。

任何人都可以分享一些他们用于此类功能的代码或分享我不知道的任何 Excel 功能来完成相同的操作吗?

提前致谢!

【问题讨论】:

  • 在 Excel 中执行 autoexec 正在执行的任何操作不是更简单吗?开放 Access 似乎有点过头了

标签: excel ms-access vba excel-2010


【解决方案1】:

使用 VBA 从 Excel 执行宏非常简单。您可以使用以下 VBA 打开 Access 数据库,然后再次将其关闭。

With CreateObject("Access.Application")
    .OpenCurrentDatabase "path\to\my\file.accdb"
    'AutoExec macro should fire automatically
    .Quit
End With

【讨论】:

  • 非常感谢!我是否应该能够直接复制到我的 excel VBA 工作表中并执行,或者是否有其他需要的代码?
  • 这应该足够了。只需填写文件位置即可。当然,代码需要添加到一个sub中,并且需要被触发。您可以将它添加到 ThisWorkbook 模块中,添加到 Workbook_Open 子中,以便在工作簿打开时自动执行它。
  • 所以我创建了以下代码块: Private Sub Workbook_Open() With CreateObject("Access.Application") .OpenCurrentDatabase "path\to\my\file.accdb" 'AutoExec 宏应该自动触发。退出以结束子结束
  • 我收到以下错误:“编译错误:无效的外部程序”
  • 您能否在您的问题中提供整个模块的代码(以便您可以格式化)?这似乎是指子或函数之外的代码。您提供的代码没有任何内容,因此我无法解释该错误。
【解决方案2】:

要在 Access 打开时运行 Access 脚本,请确保您在标准模块中有一个 FUNCTION(不是子)。

Option Compare Database

'------------------------------------------------------------
' AutoExec
'
'------------------------------------------------------------
Function AutoExec()
On Error GoTo AutoExec_Err

    DoCmd.RunCommand acCmdWindowHide
    MsgBox "Welcome to the client billing application!", vbOKOnly, "Welcome"
    DoCmd.OpenTable "Orders", acViewNormal, acEdit


AutoExec_Exit:
    Exit Function

AutoExec_Err:
    MsgBox Error$
    Resume AutoExec_Exit

End Function

请记住,有多种方法可以从 Excel 控制 Access。这是一种选择。

Global oApp As Object

Sub OpenAccess()

   Dim LPath As String
   Dim LCategoryID As Long

   'Path to Access database
   LPath = "C:\Users\Excel\Desktop\Coding\Microsoft Access\Northwind.mdb"

   'Open Access and make visible
   Set oApp = CreateObject("Access.Application")
   oApp.Visible = True

   'Open Access database as defined by LPath variable
   oApp.OpenCurrentDatabase LPath

   'Open form of interest
   oApp.DoCmd.OpenForm "Form1"

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-29
    • 2015-11-18
    • 2019-01-27
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多