2015-07-20 71 views
1

我基本上尝试做以下(出口为报告PDF):从另一个数据库中的MS Access导出报告

DoCmd.OpenReport report_name, acViewPreview 
DoCmd.OutputTo acOutputReport, report_name, acFormatPDF, dest, False 
DoCmd.Close acReport, report_name 

但是我试图让它在一个完全独立的数据库中引用的报告对象。如何修改report_name以使其起作用?我试过“[dbpath]。[report_name]”无济于事。报告名称中包含空格,如果有关的话。

回答

0

创建一个新的Access应用程序会话,打开另一个数据库,并将该会话用作Application.DoCmd方法的主机应用程序。

Dim objAccess As Access.Application 
Set objAccess = New Access.Application 

objAccess.Visible = True ' <- useful during development 
objAccess.OpenCurrentDatabase "C:\wherever\YourDatabase.accdb" 
With objAccess.DoCmd 
    .OpenReport report_name, acViewPreview 
    .OutputTo acOutputReport, report_name, acFormatPDF, dest, False 
    .Close acReport, report_name 
End With 
objAccess.CloseCurrentDatabase 
objAccess.Quit 
Set objAccess = Nothing 
+0

有什么理由做“新access.application”可能会导致引用错误?我有时会听到,由于这个原因,后期绑定比早期绑定更好。 –

+0

对于'Access.Application'不是一个问题。您在Access中运行VBA代码,默认情况下,您的项目具有Access对象库的参考,并且它是正确的版本。在其他情况下,如果您无法确定该参考的预期版本是否可用,那么后期绑定很有用;甚至是否有该参考文献的任何版本可用。 – HansUp