在Windows 10的Access 2016中发送传真(传真服务器使用Windows Server 2003)
我有一个传统的Access 2003应用程序,我们已经在Wondows 7中运行。我已决定转换为Access 2016,以便它将继续在Windows 10中工作以防我们需要替换当前的Windows 7计算机之一并且只有Windows 10可用。除了其中一项功能外,它几乎可以完美转换,发送传真。在Windows 10的Access 2016中发送传真(传真服务器使用Windows Server 2003)
我们的传真服务器是Windows Server 2003计算机,就像我说过的,我在Windows 10计算机上在Access 2016中运行我的应用程序。
这是我的传真代码:
Public Sub SendFax(RptName, faxNumber, faxName)
Dim FS As New FAXCOMEXLib.FaxServer
Dim FD As New FAXCOMEXLib.FaxDocument
Dim strComputerName As String
Dim strFile As String
strComputerName = "server08"
strFile = "C:\Reports\test.snp"
DoCmd.OutputTo acOutputReport, RptName, acFormatSNP, strFile, False
DoCmd.Close acReport, RptName
FS.Connect (strComputerName)
FD.Body = strFile
FD.CoverPageType = fcptNONE
FD.DocumentName = "Test"
FD.priority = fptHIGH
'FD.Recipients.Add USCanonicalPhone(faxNumber), faxName
FD.Recipients.Add faxNumber, faxName
FD.Submit(strComputerName)
End Sub
我一直在使用也尝试:
FD.ConnectedSubmit(FS)
到位FD.Submit的但无论哪种方式的代码炸毁该行上。我收到以下错误:
Run-time error '-2147023741 (80070483)': Operation failed.
我确实发生在该网页已经过时,而且引用Vista中跌倒,但我不知道它是否适用于Windows 10也同样适用:Sending a Fax (Windows)
我也尝试过将该页面上显示的JobID变量实现到我的代码中,但它仍然导致相同的错误。
我确实看到在网页上提到了有关写入权限的解决方法,但我不知道如何执行此操作,另外我的计算机上没有C:\ ProgramData目录。
我也想知道我是否能够将Windows 7机器设置为传真服务器,并且能否解决问题。我们的服务器当然是因为它的操作系统已经有13年的历史了,升级到Windows Server 2012会解决这个问题吗?还是应该等待Windows Server 2016发布?
任何帮助将不胜感激。谢谢。
我想通了。这个问题绝对是一个文件关联问题。但是它与Access 2016无关,或者Windows传真和扫描。它必须处理你如何查看PDF的。 (我假设真的会适用于SNP文件,但我只使用SNP,因为Access 2003不支持导出为PDF,没有必要担心过时的文件格式)
问题是,默认查看器新安装的Windows 10的pdf是Microsoft Edge,Microsoft Edge不支持打印到传真。为了解决这个问题,您需要安装Adobe Acrobat,并将其设置为您的默认PDF查看器,因为它支持打印到传真。一旦你这样做了,使用代码将PDF文件发送到传真服务器或将PDF文件打印到您在Acrobat中打开的传真服务器上将没有任何问题。
对于那些你们谁有兴趣,这里是我的新代码,没有太大的变化:
Public Sub SendFax(RptName, faxNumber, faxName)
Dim FS As New FAXCOMEXLib.FaxServer
Dim FD As New FAXCOMEXLib.FaxDocument
Dim strComputerName As String
Dim strFile As String
strComputerName = "server08"
strFile = "C:\Reports\test.pdf"
DoCmd.OutputTo acOutputReport, RptName, acFormatPDF, strFile, False
DoCmd.Close acReport, RptName
FS.Connect strComputerName
FD.Body = strFile
FD.CoverPageType = fcptNONE
FD.DocumentName = "Test"
FD.priority = fptHIGH
FD.Recipients.Add faxNumber, faxName
FD.Submit (strComputerName)
End Sub
当然,你将需要参考使用“Microsoft传真服务扩展COM类型库”是。
作为便笺,您可以导出到RTF,并且它将传真没有问题,但是您将丢失您的访问报告中可能有的任何图像。 XLS也可以用于传真,但是当我尝试在Excel中格式化时很糟糕,无法阅读并且传播到很多页面。 – Ben
这是像这里的文件关联问题(相同的错误号)https://www.interfax.net/en/dev/faxcomexlib/operation-failed。 – BitAccesser
感谢您的信息。我发现我使用的.snp格式在Access 2010中已经停用,并且Access现在提供了导出为pdf的功能。所以我设置我的代码来做到这一点:'strFile =“C:\ Reports \ test.snp”' 'DoCmd.OutputTo acOutputReport,RptName,acFormatSNP,strFile,False' 但是,我仍然收到错误。我不明白这可能是一个文件关联错误,因为我的计算机上安装了Acrobat,并且没有问题打开PDF文件。是否有可能需要使用Microsoft PDF阅读器而不是Adobe? 谢谢 – Ben
刚刚意识到,我没有Acrobat,我正在使用Microsoft Edge打开pdf。 – Ben