在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发布?

任何帮助将不胜感激。谢谢。

+0

这是像这里的文件关联问题(相同的错误号)https://www.interfax.net/en/dev/faxcomexlib/operation-failed。 – BitAccesser

+0

感谢您的信息。我发现我使用的.snp格式在Access 2010中已经停用,并且Access现在提供了导出为pdf的功能。所以我设置我的代码来做到这一点:'strFile =“C:\ Reports \ test.snp”' 'DoCmd.OutputTo acOutputReport,RptName,acFormatSNP,strFile,False' 但是,我仍然收到错误。我不明白这可能是一个文件关联错误,因为我的计算机上安装了Acrobat,并且没有问题打开PDF文件。是否有可能需要使用Microsoft PDF阅读器而不是Adobe? 谢谢 – Ben

+0

刚刚意识到,我没有Acrobat,我正在使用Microsoft Edge打开pdf。 – Ben

我想通了。这个问题绝对是一个文件关联问题。但是它与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类型库”是。

+0

作为便笺,您可以导出到RTF,并且它将传真没有问题,但是您将丢失您的访问报告中可能有的任何图像。 XLS也可以用于传真,但是当我尝试在Excel中格式化时很糟糕,无法阅读并且传播到很多页面。 – Ben