在 Windows 10 上用 Access 2016 发送传真(传真服务器使用 Windows Server 2003)

Sending a fax in Access 2016 on Windows 10 (fax server uses Windows Server 2003)

我有一个遗留的 Access 2003 应用程序,我们已经 运行 在 Wondows 7 中。我决定转换到 Access 2016,这样它将继续在 Windows 10 中工作,以防我们曾经需要更换我们当前的 Windows 7 台机器中的一台,但只有 Windows 10 台可用。除了它的一项功能,发送传真外,它几乎完美地转换了。

我们的传真服务器是一台 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 机器设置为传真服务器,是否可以解决问题。当然,我们的服务器需要升级,因为它的 OS 已经使用了 13 年,升级到 Windows Server 2012 会解决问题吗?还是我应该等待 Windows Server 2016 发布?

如有任何帮助,我们将不胜感激。谢谢。

我想通了。该问题绝对是文件关联问题。但是,它与 Access 2016 或 Windows 传真和扫描无关。它必须处理您查看 PDF 的方式。 (我假设 SNP 文件也是如此,但我只使用 SNP,因为 Access 2003 不支持导出为 PDF,不必担心过时的文件格式)

问题是新安装的 Windows 10 的默认 pdf 查看器是 Microsoft Edge,而 Microsoft Edge 不支持打印到传真。要解决此问题,您需要安装 Adob​​e 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 Fax Service Extended COM Type Library"。