【问题标题】:Excel macro that open and prepares Access打开并准备 Access 的 Excel 宏
【发布时间】:2017-12-08 10:13:09
【问题描述】:

我有一个可以从 excel 打开访问的代码:

Dim objShell As Object

Set objShell = CreateObject("Shell.Application")
objShell.Open "\\acrtnd\share$\PUBLIC\!tools\preportDST.accdb"
Set objShell = Nothing

我想稍微自动化并添加代码,将值粘贴到访问中的字段并在访问中运行宏以开始计算,但我不知道如何从 Excel 内部管理其他办公部分。文本框名称为“txt_PasteField”,访问中的 VBA 宏名称为“run_calculation”,我在下面尝试了类似的操作,但 objShell 不允许此类操作。

Dim objShell As Object

Set objShell = CreateObject("Shell.Application")
objShell.Open "\\acrtnd\share$\PUBLIC\!tools\preportDST.accdb"
     objShell.txt_PasteField.Value = Sheets("dashboard").Cells(5, 1).Value
     call objShell.run_calculation 
Set objShell = Nothing

有人可以提供这样做的方法或将我导航到所需的命令吗? 提前感谢您的帮助。

【问题讨论】:

    标签: excel ms-access vba


    【解决方案1】:

    我会尽力帮助你,但我对细节还有些不清楚。由于文本字段必须位于表单或报表上,因此您必须先将其打开。此外,如果您想在打开 Access 应用程序后对其进行影响,则需要使用 OLE 自动化。

    Dim appAccess As Object
    Set appAccess = CreateObject("Access.Application")
    With appAccess
        .OpenCurrentDatabase "\\acrtnd\share$\PUBLIC\!tools\preportDST.accdb"
        .UserControl = True
        .DoCmd.OpenForm "MyForm"
        .Forms!MyForm.txt_PasteField.Value = Sheets("dashboard").Cells(5, 1).Value
        .Run "run_calculation"
    End With
    

    【讨论】:

    • 好的,谢谢。我不提供表格,因为我不知道。它是“p_Main”的形式。除了我无法运行宏之外,您的解决方案几乎可以正常工作。我调查这个宏在“Form_p_Main”中的“Microsoft Access Class Object”中,应该在那个usserform中运行(从一开始就打开)但是.Run "run_calculation"不起作用,我正在尝试使用.DoCmd.RunMacro "run_calculation"并尝试参考"p_Main!run_calculation" 但失败了
    • 您使用的是 vba sub、vba 函数还是宏,它位于何处?
    • 原来这是访问文件 VBA_preportDST/Microsoft Access Class Object/Form_p_Main 中的函数(类似于 excel vba 项目中的模块)。但我也尝试在调用该函数的访问文件中创建 subs,但它没有帮助,我不知道如何从 excel 运行它,如何解决它或其他什么
    • 你要么需要把你的代码放在一个普通的模块中,然后放在一个函数中(不是子函数),然后你可以使用.run,或者你可以把它们放在你的表单中作为一个公开访问的方法,但这需要更多代码
    • 我不能对访问中的函数做太多事情,因为它在那里做了太多事情,我将打开访问权限的整个代码放在模块中,并在工作表中调用它,但它也无济于事。它打开访问,将值粘贴到正确的位置,并且无法运行计算功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多