Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/5.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 将报告另存为pdf_Ms Access_Vba_Pdf - Fatal编程技术网

Ms access 将报告另存为pdf

Ms access 将报告另存为pdf,ms-access,vba,pdf,Ms Access,Vba,Pdf,目前我正在使用pdfcreator将报告转换为pdf格式。由于这必须手动完成,我正在寻找一个解决方案,以自动保存为pdf文件的报告。代码应该在access 2000和更新版本中工作 我以前使用过这种方法: 这是我用来自动打印Microsoft Access的方法 PDF格式的报告,即无人参与且无烦人的“另存为…” 对话,更重要的是,不必使用广告 程序,如Adobe Acrobat及其相关API 该技术使用Ghostscript和重定向端口监视器-两个免费 创建PDF文档的程序由Russell L

目前我正在使用pdfcreator将报告转换为pdf格式。由于这必须手动完成,我正在寻找一个解决方案,以自动保存为pdf文件的报告。代码应该在access 2000和更新版本中工作

我以前使用过这种方法:

这是我用来自动打印Microsoft Access的方法 PDF格式的报告,即无人参与且无烦人的“另存为…” 对话,更重要的是,不必使用广告 程序,如Adobe Acrobat及其相关API

该技术使用Ghostscript和重定向端口监视器-两个免费 创建PDF文档的程序由Russell Lang免费提供 实际的自动化需要使用FileSystemObject进行VBA编码, 网络(Windows脚本主机网络对象)和访问 自动化

说明:

1) 安装Ghostscript -Postscript语言和PDF的解释器

2) 安装RedMon-重定向端口监视器 -将特殊打印机端口重定向到程序(例如 (鬼脚本)

3) 使用Ghostscript和Redmon设置虚拟PDF打印机 -下面是两个网页,介绍如何安装 上述工具: http://stat.tamu.edu/~henrik/GSWriter/GSWriter.html

4) 在中配置PDF虚拟打印机使用的RedMon打印机端口 以下方式: -输出:“程序处理输出” -新的PDF文件应始终保存到同一文件,即。 C:\temp\output.pdf

将其用于“程序参数”设置: @c:\gs\pdfconf.txt-sOutputFile=“c:\temp\output.pdf”-c.setpdfwrite -f-

(注意文本文件路径而不是“%1”)

5) 编写自己的Visual Basic代码,将报告打印到pdf 然后使用FileSystemObject将其复制到 选择。使用WScript.Network对象更改默认打印机 从通常的默认打印机切换到PDF打印机,然后再切换回来

示例代码(Access Visual Basic):

要使前面的代码在Access 2000中工作,必须添加 对Microsoft脚本运行时和Windows脚本主机的引用 对象模型

到目前为止,我的经验是子例程DoCmd.OpenReport()完成 将报告快速输出为PDF…但是,如果您有 当FileSystemObject 转到移动/重命名它。因此,您可能希望使用Windows API Sleep()函数。 见<>

编写一个打印出多个报告的例程是一个简单的任务 练习给读者听。就我个人而言,我更喜欢把我的报告保存在 表名为“设置报告”,而不是硬编码报告名称 进入我的VBA模块

其他提示:

  • 使用
    DoCmd.SendObject()
    自动发送新创建的 向经理汇报

  • 使用PDF工具包将不同的PDF报告合并到一个文件中 网址: 也可以使用VBA Shell()函数或在 通过
    WScript.Shell.Run()方法创建VBScript

  • 使用VBScript自动访问,就像Excel或Word一样。 请参阅以下Microsoft知识库文章: ACC:使用Microsoft Access作为自动化服务器

代码片段(VBScript):

不用说,这种方法可以做很多事情。 最棒的是,你不必学习其他API(其他API) 比标准Windows脚本主机和Microsoft脚本运行时 图书馆,无论如何你都应该知道)。最重要的是 完全免费

设置PDF打印机: 以下是有关安装和配置的更详细说明 虚拟PDF打印机-抄袭自: <>

  • 将Ghostscript安装到C:\

  • 创建一个文本文件(c:\gs\pdfconf.txt)并添加以下文本:

    -Ic:\gs\gs8.11\lib;c:\gs\fonts -sDEVICE=pdfwrite -多瑙河 -德萨费尔

  • 请注意,第一行指向Ghostscript的8.11版。如果 您有不同的版本或将其安装到不同的位置 位置,进行适当的更改

  • 下载、解包和安装RedMon(重定向端口监视器)

    • 运行setup.exe时,您将只看到一个消息框
  • 转到Windows和中“开始”按钮下的“打印机/传真”菜单 添加新打印机

    • 打印机的驱动程序必须用于/color postscript/ 打印机我选择了HP彩色激光喷射4550 PS
    • 将打印机端口设置为RPT1:(重定向端口)
  • 配置端口 将端口重定向到:“C:\gs\gs8.11\bin\gswin32c.exe” (更新此行以反映您的版本和位置。) 重影脚本(如果不同)

  • 此程序的参数为: @c:\gs\pdfconf.txt-sOutputFile=“%1”-c.setpdfwrite-f-

    输出:“提示输入文件名” 运行:“正常”

  • 试着用彩色打印一些东西到这台打印机上。如果一切顺利 对,系统将提示您输入PDF文件的文件名 保存在(别忘了添加.PDF扩展名)。 ' 希望这对别人有帮助
    CyranoVR@gmail.com

    我以前使用过这种方法:

    这是我用来自动打印Microsoft Access的方法 PDF格式的报告,即无人参与且无烦人的“另存为…” 对话,更重要的是,不必使用广告 程序,如Adobe Acrobat及其相关API

    该技术使用Ghostscript和重定向端口监视器-两个免费 创建PDF文档的程序由Russell Lang免费提供 实际的自动化需要使用FileSystemObject进行VBA编码, 网络(Windows脚本主机网络对象)和访问 自动化

    说明:

    1) 安装Ghostscript -Postscript语言和PDF的解释器

    2) 安装RedMon-重定向端口监视器 -将特殊打印机端口重定向到程序
    Sub PrintReportToPDF(strReport as String, _
    strOutputPath as String)
    
    Const PDF_PRINTER as String = "PDF Printer"
    Const ORIGINAL_PRINTER as String = "\\OFFICE\HP1320"
    Const TEMP_PATH as String = "C:\temp\output.pdf"
    
    Dim net as WScript.Network
    Dim fso as Scripting.FileSystemObject
    
    Set net = new WScript.Network
    net.setDefaultPrinter PDF_PRINTER
    
    DoCmd.OpenReport strReport
    
    Set fso = New Scripting.FileSystemObject
    fso.CopyFile TEMP_PATH, strOutputPath, True
    fso.DeleteFile TEMP_PATH
    Set fso = Nothing
    
    net.setDefaultPrinter ORIGINAL_PRINTER
    Set net = Nothing
    
    End Sub
    
    dim acc
    set acc = CreateObject("Access.Application")
    with acc
    ..OpenCurrentDatabase "C:\Reports\Sales.mdb"
    
    ' Call the customer subroutine we defined earlier
    ..Run("PrintReportToPDF", "rptSalesFigures_Monthly", _
    "N:\Marketing\Reports\SalesSummary" _
    & Year(Date()) & Format(Month(Date()),"00")
    
    [Etc...]