我在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")
答案 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来更改它。