Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用VBA生成PDF_Ms Access_Vba - Fatal编程技术网

Ms access 使用VBA生成PDF

Ms access 使用VBA生成PDF,ms-access,vba,Ms Access,Vba,我想使用VBA生成PDF文件,我找到了一些工具,但我不确定它是否支持以表格格式生成。或者是否有其他第三方工具(免费)生成PDF格式的访问表单?根据您想要导出的内容和使用的VBA应用程序,您有几个选项 如果您正在导出access报告,那么这是好的(而且是免费的!) 对于大多数其他内容,您可以使用PDF打印驱动程序,并将任何要导出的内容推送到“打印机”。这里有许多免费和商业选项,因此谷歌是您的朋友,这取决于您想要导出的内容和使用的VBA应用程序,您有一些选项 如果您正在导出access报告,那么这是

我想使用VBA生成PDF文件,我找到了一些工具,但我不确定它是否支持以表格格式生成。或者是否有其他第三方工具(免费)生成PDF格式的访问表单?

根据您想要导出的内容和使用的VBA应用程序,您有几个选项

如果您正在导出access报告,那么这是好的(而且是免费的!)


对于大多数其他内容,您可以使用PDF打印驱动程序,并将任何要导出的内容推送到“打印机”。这里有许多免费和商业选项,因此谷歌是您的朋友

,这取决于您想要导出的内容和使用的VBA应用程序,您有一些选项

如果您正在导出access报告,那么这是好的(而且是免费的!)


对于大多数其他内容,您可以使用PDF打印驱动程序,并将任何要导出的内容推送到“打印机”。这里有许多免费和商业选项,因此谷歌是您的朋友

安装PDF打印驱动程序并使用它打印您的工作表。例如,我安装了PDFCreator

ActiveSheet.PrintOut ActivePrinter:="PDFCreator"

警告:PDFCreator是免费的,但有0.9.7及更高版本。我有清洁器。当然,您也可以安装其他PDF驱动程序

安装PDF打印驱动程序并使用它打印工作表。例如,我安装了PDFCreator

ActiveSheet.PrintOut ActivePrinter:="PDFCreator"

警告:PDFCreator是免费的,但有0.9.7及更高版本。我有清洁器。当然,您也可以安装其他PDF驱动程序

在Access中创建PDF的最佳方法是首先在Access中生成报告

原因是,当您首先在Access中生成报告时,您可以完全控制报告在PDF中的外观

假设您知道如何在Access中创建报告,以下代码将帮助您将该报告转换为PDF,然后允许用户相应地保存PDF

Dim strReportName = "RptYourReportName" ' first quote in the name of the report you already created in access

Docmd.OpenReport strReportName, acViewPreview 'tell access to open up the report
Reports(strReportName).Visible = False

If Reports(strReportName).HasData then
    Call ConverReportToPDF(strReportName,,"Give_Generic_Name.PDF",True,False)
End if
DoCmd.Close acReport, strReportName
下面是转换报告的函数-只需将其复制到VBA代码的模块部分即可

希望这有帮助!!
公共函数ConvertReportToPDF(_
可选名称为String=“”_
可选快照名称为字符串=”_
可选OutputPDFName As String=“”_
可选的ShowSaveFileDialog为Boolean=False_
可选的StartPDViewer为布尔值=True_
可选压缩级别,只要长度=0_
可选PasswordOpen As String=“”_
可选的PasswordOwner为String=“”_
长=0时的可选密码限制_
可选的PDFNOF嵌入,只要长度=0_
可选PDFUnicodeFlags,长度为0_
)作为布尔值
'RptName是此MDB中包含的报表的名称
'SnapshotName是现有快照文件的名称
'OutputPDFname是为输出PDF文件选择的名称
'ShowSaveFileDialog是一个布尔参数,用于指定是否显示
'标准windows文件对话框窗口,以选择现有快照文件
'压缩级别-尚未连接
'PasswordOwner-尚未连接
'PasswordOpen-尚未连接
'密码限制-尚未连接
'PDFnof嵌入-不要在PDF中嵌入字体。设置为1可停止该操作
'在输出PDF中嵌入所有字体的默认过程。如果你是
'仅使用-任何标准Windows字体
'仅使用-PDF规范本机支持的任何14种标准字体
“14种标准字体
“所有版本的Adobe Acrobat都支持14种标准字体。这些字体总是可用的
不管它们是否嵌入,都是独立的。
'姓氏附言姓名样式
“没有
'信使
“信使”斜体
'Courier Courier粗体斜体fsBold+fsItalic
“Helvetica Helvetica fsNone
“Helvetica Helvetica Bold fsBold
“Helvetica Helvetica”
'Helvetica Helvetica BoldLodden fsBold+fsItalic
“泰晤士报”
“倍倍加粗”
“Times Times Italic”
'倍倍倍粗体斜体fsBold+fsItalic
'Symbol Symbol fsNone,仅模拟其他样式
“ZapfDingbats ZapfDingbats fsNone,其他风格仅为模仿
Dim blRet作为布尔值
'让我们看看DynaPDF.DLL是否可用。
blRet=LoadLib()
如果blRet=False,则
'找不到DynaPDF.dll或StrStorage.dll文件
退出功能
如果结束
关于错误转到错误
将strPath设置为字符串
将strPathandFileName设置为字符串
Dim STREMF未压缩为字符串
像弦一样暗淡的声音文件
模糊的长度
'初始化我们的字符串缓冲区
strPath=Space(路径)
'将ReportName保存到本地变量
mReportName=RptName
'让我们删除所有现有的临时快照文件
如果Len(mUncompressedSnapFile&vbNullString)>0,则
Kill mUncompressedSnapFile
mUncompressedSnapFile=“”
如果结束
'如果已向我们传递快照文件的名称,则
'跳过下面的快照创建过程
如果Len(快照名称&vbNullString)=0,则
'确保向我们传递了一个ReportName
如果Len(RptName&vbNullString)=0,则
'没有有效参数-失败并退出!!
ConvertReportToPDF=“”
退出功能
如果结束
'获取系统临时路径
'返回路径长度(路径中的字符数)
lngRet=GetTempPath(路径、strPath)
'删除空值和尾随“\”
strPath=Left(strPath,lngRet)和Chr(0)
'现在需要一个唯一的文件名
'从先前中止的尝试锁定。
“需要更多的工作!
strPathandFileName=GetUniqueFilename(strPath,“SNP”和Chr(0),“SNP”)
'将所选报告导出为快照格式
DoCmd.OutputTo acOutputReport,RptName,“快照格式(*.snp)”_
strPathandFileName
“确保流程有时间完成
多芬特
其他的
strPathandFileName=快照名称
如果结束
'让我们解压缩为相同的文件名,但将类型更改为“.tmp”
'strEMFUncompressed=Mid(strPathandFileName,1,Len(strPathandFileName)-3)
'strEMFUncompressed=strEMFUncompressed&“tmp”
将sPath变暗为字符串*512
lngRet=GetTempPath(512,sPath)
strEMFUncompressed=GetUniqueFilename(sPath,“SNP”,“
DoCmd.OutputTo acOutputReport, "SimpleReport", acFormatPDF, "C:\Users\Paul\Documents\PDFTest01.pdf", False