如何确定用户是否关闭了已由Excel中的代码打开的Access应用程序
我使用Excel中存储在Access数据库中的一些数据。如果用户想要添加/更改数据,则必须在Access前端完成(在我的情况下)。为了提供一种简便的方法,我在Excel工作表中放置了一个“编辑数据”按钮,以打开数据库+表单:如何确定用户是否关闭了已由Excel中的代码打开的Access应用程序,excel,vba,ms-access,Excel,Vba,Ms Access,我使用Excel中存储在Access数据库中的一些数据。如果用户想要添加/更改数据,则必须在Access前端完成(在我的情况下)。为了提供一种简便的方法,我在Excel工作表中放置了一个“编辑数据”按钮,以打开数据库+表单: ' standard module Const mstrDatabase = ' path & filename Const mstrForm = ' name of form to edit data Private moAccessApp As Ac
' standard module
Const mstrDatabase = ' path & filename
Const mstrForm = ' name of form to edit data
Private moAccessApp As Access.Application
' module level object to keep database open after button_click-code finished
Sub OpenDatabase_Button_Click()
Set moAccessApp = CreateObject("Access.Application")
moAccessApp.OpenCurrentDatabase mstrDatabase
moAccessApp.Visible = True
moAccessApp.DoCmd.OpenForm mstrForm
End Sub
如果用户关闭访问,则仍会设置moacessapp
对象(Debug.Print(moacessapp为Nothing)
打印出False
)
问题:
Private Sub Form_Unload()
Call runExcelMacro("C:\YourWorkbookPath.xls", "MacroName")
End Sub
Sub MacroName()
MsgBox "Access Form Is closed"
ThisWorkbook.RefreshAll
End Sub
Excel宏
Private Sub Form_Unload()
Call runExcelMacro("C:\YourWorkbookPath.xls", "MacroName")
End Sub
Sub MacroName()
MsgBox "Access Form Is closed"
ThisWorkbook.RefreshAll
End Sub
另请注意,根据,没有用于访问的OnClose
事件
此处有更多文档
是什么阻止您在Excel中创建表单并更新Access数据库?这意味着用户将永远不必打开Access数据库,然后您的工作簿可以链接到Access数据库,从而始终从中刷新数据Access@Martin.lindenlauf是否满足您的需求?@Zac我认为在Excel中实现所有数据更新需求将是一个干净的解决方案,但这比在Access中使用现有表单+子表单结构要昂贵得多——在我的情况下成本太高,因此我需要一种“快速且肮脏”的解决方案,尽管我尽量避免出现“多个实例”和“缺少刷新”等操作错误(最好是用户培训)。阅读所有问题和评论后,你的方法确实很肮脏,但一点也不快。您需要不同的程序来解决每个问题。你应该为每个人提出一个新问题,而不是一篇有很多问题的帖子。关于插入数据,简单的方法就是从excel中插入SQL语句。关于更新,更新语句。。其余的问题应该放在不同的帖子里。我不相信你的“快速而肮脏”的解决方案会更快或更便宜(我真的被这个昂贵的声明弄糊涂了)。但正如@FoxfireAndBurnsAndBurns所说,没有任何东西可以阻止您从Excel调用SQL来访问。。然而。。您的项目,您的callI认为可以单独在Excel中处理此问题,但从Access窗体事件调用Excel过程可能更好:可以处理更多情况(例如,
AfterUpdate
/AfterInsert
=>刷新Excel)。由于有多个工作簿链接到同一数据库,并且表单是“独立使用”前端数据库的一部分,因此我需要告诉Access(1)如果Excel调用了表单加载,(2)调用了哪个工作簿,以及(3)Excel中的哪个过程应处理该情况。我想我可以通过在Excel的调用代码中设置表单中一些隐藏的未绑定字段来实现这一点。