2013-03-26 67 views
3

我想在excel vba中運行訪問宏並複製訪問查詢。
當我運行下面的代碼,我在網上cn.DoCmd.RunMacro「runCopyqueryVragenlijsten」在excel中運行訪問宏

'~~> 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 
+0

你檢查的** ** runCopyqueryVragenlijsten是 – 2013-03-26 10:09:59

+0

,我已經檢查它的拼寫。這並不能解決問題。 – user2172916 2013-03-26 10:28:30

+1

在MS Access中執行* DoCmd.RunMacro「runCopyqueryVragenlijsten」*時會發生什麼? – 2013-03-26 10:30:43

回答

2

得到一個運行時錯誤3001我建議單獨運行宏,然後連接到他的文件,並複製數據。

E.g. from 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