访问表单:如何获取访问表单的PDF

时间:2011-05-24 15:56:39

标签: ms-access pdf

我在Access 2010中创建了一个PDF格式的图标。该格式有3个标签;每个选项卡都有一个单独的表单页面,所有选项卡都有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")

2 个答案:

答案 0 :(得分: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行以使用报表而不是表单。

答案 1 :(得分:0)

改变这个:

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

......对此:

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

Application.Printer是属性,不是对象,因此它不使用SET来更改它。