在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中运行访问宏的主要内容,如果未能解决你的问题,请参考以下文章