在 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 不支持打印到传真。要解决此问题,您需要安装 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 Fax Service Extended COM Type Library"。
我有一个遗留的 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 不支持打印到传真。要解决此问题,您需要安装 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 Fax Service Extended COM Type Library"。