2011-05-24 55 views
0

我在Access 2010中创建了我的表单中的PDF图标。此表单中有3个选项卡;每个选项卡都有一个单独的表单页面,PDF图标对于所有选项卡都很常见。访问表单:如何获取访问表单的PDF

现在我希望每当用户点击该图标时,就会创建该表单的PDF文件。

我写了这个代码

Private Sub cmdPrintReportPDF_Click() 

    Dim strDefaultPrinter As String 
    strDefaultPrinter = Application.Printer.DeviceName 

    **Set Application.Printer = Application.Printers("PDFCreator")** 
    'DoCmd.PrintOut acPrintAll 

    DoCmd.OpenReport "Graph_report", acViewNormal 

    Set Application.Printer = Application.Printers(strDefaultPrinter) 
End Sub 

但我发现了以下错误:

Invalid procedure call or argument on line no 4. 
Set Application.Printer = Application.Printers("PDFCreator") 
+0

我相信他所得到的是,当一个命令按钮被选中时,他希望表单被自动打印成PDF格式......但我建议他用报表来代替。 – 2011-05-24 16:44:33

+0

是的,我想要点击按钮,它将我当前的表单转换为pdf格式 – 2011-05-24 17:08:32

回答

2

我已经安装的PDFCreator和这条线,这将触发一个错误的你,不不会为我引发错误。

Set Application.Printer = Application.Printers("PDFCreator") 

转到VB编辑器立即窗口,看看你还可以得到这一行错误:

? Application.Printers("PDFCreator").DeviceName 

如果这也触发了错误,你可能没有打印机其DeviceName是PDFCreator。您可以使用此过程列出打印机的名称。

Public Sub ListPrinters() 
    Dim objPrinter As Printer 

    For Each objPrinter In Application.Printers 
     Debug.Print objPrinter.DeviceName 
    Next objPrinter 
End Sub 

然而,与Access 2010,我想你可以不使用您的PDFCreator打印设备创建一个PDF文件。至少这对我来说适用于Access 2007,所以我猜它会适合你。

Private Sub cmdSaveAsPdf3_Click() 
    Dim strPath AS String 
    strPath = CurrentProject.Path & Chr(92) & "Sample3.pdf" 
    DoCmd.OutputTo acOutputForm, "fsubSample3", acFormatPDF, strPath 
End Sub 

那个按钮点击代码创建嵌入在我的主窗体的选项卡控制...的页面的PDF形式(Sample3.pdf)(fsubSample3),这就是你要在原有基础上的版本我的想法你的问题。现在看来你想创建一个报告的PDF而不是表单。您可以调整DoCmd.OutputTo行以使用报表而不是表单。

0

更改此:

Set Application.Printer = Application.Printers("PDFCreator") 

...这样的:

Application.Printer = Application.Printers("PDFCreator") 

Application.Printer是一个属性,而不是一个对象,所以它不使用SET去改变它。