在excel中运行访问宏

Posted

技术标签:

【中文标题】在excel中运行访问宏【英文标题】:run access macro within excel 【发布时间】:2013-03-26 10:02:33 【问题描述】:

我希望在 excel vba 中运行访问宏并复制访问查询。 当我运行下面的代码时,我在 cn.DoCmd.RunMacro "runCopyqueryVragenlijsten" 行收到运行时错误 3001

'~~> Select access file Database Questionmark.mdb
Set cn = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
cn.Open "provider=microsoft.jet.oledb.4.0;data source=D:\Data\Geschiktheidstesten en OPQ-rapport NMBS competenties\Analyse\Database Questionmark.mdb"

'~~> Run access macro
cn.DoCmd.RunMacro "runCopyqueryVragenlijsten"

'~~> Select access query to copy
rs.Open "select * from Copyquery_Vragenlijsten", cn

'~~> paste access query in sheet vragenlijst
Worksheets("vragenlijst").Range("a2").CopyFromRecordset rs

'~~> Close access file and put cursor on cell A1 of sheet evaluatierooster_NL
rs.Close
Set rs = Nothing
Set cn = Nothing

【问题讨论】:

你检查过runCopyqueryVragenlijsten的拼写吗 是的,我已经检查过了。这并不能解决问题。 在 MS Access 中执行 DoCmd.RunMacro "runCopyqueryVragenlijsten" 会发生什么? 我在访问 Visual Basic 时转换了宏,这给了我以下 codeFunction runCopyqueryVragenlijsten() DoCmd.OpenTable "Copyquery_Vragenlijsten", acViewNormal, acEdit DoCmd.RunCommand acCmdSelectAllRecords DoCmd.RunCommand acCmdDeleteRecord DoCmd.Close acTable, "Copyquery_Vragenlijsten" DoCmd.OpenQuery "CopyqueryVragenlijsten", acViewNormal, acEdit DoCmd.Close acQuery, "CopyqueryVragenlijsten" DoCmd.OpenTable "Copyquery_Vragenlijsten", acViewNormal, acEdit DoCmd.Close acTable, "Copyquery_Vragenlijsten" 结束函数 运行宏时一切正常 【参考方案1】:

我建议单独运行宏,然后连接到他的文件并复制数据。

例如来自http://www.ozgrid.com/forum/showthread.php?t=13173

Sub ExportAccessData()

    Dim mydb As Object

    Set mydb = GetObject("G:\mgai\pertrac\database\StrategyResearch.mdb") 
    mydb.Application.Run "ExportData"  
    mydb.Application.Quit 
    Set mydb = Nothing

End Sub

例如来自http://support.microsoft.com/kb/131921

Sub Run_Access_Macro()

    Shell("c:\access\msaccess.exe c:\access\sampapps\nwind.mdb")
    Chan = DDEInitiate("MSACCESS", "system") 
    Application.ActivateMicrosoftApp xlMicrosoftAccess
    DDEExecute Chan, "Sample AutoExec"
    Application.DDETerminate Chan

End Sub

【讨论】:

以上是关于在excel中运行访问宏的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel VBA 运行访问查询

在启用宏的情况下运行Excel [重复]

如何在excel2007中实现宏的快捷键

我在excel中使用VBA宏程序时,报错无法执行,为啥!前提,程序没有问题,因为单位机器运行良好

从 Excel 执行 .exe 文件

Python - 运行 Excel 宏