VBA transformNodeToObject或transformNode失败,显示“访问被拒绝”

时间:2018-08-03 09:26:19

标签: vba excel-vba xslt msxml

我有两个内置于Excel中的应用程序,它们使用VBA将工作表中的某些用户输入数据转换为XML,然后使用XSLT转换为HTML。这两个应用程序都是大约构建的。 6年前,此代码一直有效。

上周,我收到报告,尝试将xml转换为html时,应用程序失败,并在transformNode行上弹出“访问被拒绝”错误。

Access is Denied error

这是原始代码:

Set xmlObj = CreateObject("MSXML2.DOMDocument.3.0")
xmlObj.LoadXML (xmlFragment)

Set xslObj = CreateObject("MSXML2.DOMDocument.3.0")
xslObj.Load (xslFile)

transformObj = xmlObj.transformNode(xslObj)

Open outputFile For Output As #2

Print #2, transformObj

Close #2

然后我尝试通过更改代码以使用DOMDocument 6.0和transformNodeToObject函数/方法来解决此问题,但是我看到相同的错误出现在transformNodeToObject行上。这是新代码:

Dim xmlSource As MSXML2.DOMDocument60
Dim stylesheet As MSXML2.DOMDocument60
Dim result As MSXML2.DOMDocument60

Set xmlSource = New MSXML2.DOMDocument60
Set stylesheet = New MSXML2.DOMDocument60
Set result = New MSXML2.DOMDocument60

result.async = False

xmlSource.async = False
'xmlSource.LoadXML (xmlFragment)
xmlSource.Load ("D:\ELFH SVN\eLibrary Generator\trunk\styles\testSource.xml")

stylesheet.async = False

stylesheet.resolveExternals = True
stylesheet.SetProperty "AllowXsltScript", True
stylesheet.SetProperty "AllowDocumentFunction", True
stylesheet.Load (xslFile)

If (xmlSource.parseError.ErrorCode <> 0) Then
    MsgBox ("Error loading source document: " & xmlSource.parseError.reason)
ElseIf (stylesheet.parseError.ErrorCode <> 0) Then
  MsgBox ("Error loading stylesheet document: " & stylesheet.parseError.reason)
Else

    'transformObj = xmlSource.transformNode(stylesheet)
    xmlSource.transformNodeToObject stylesheet, result

End If

尽管我过去不必这样做,但为了找出问题,我也在Excel中打开了我的安全设置,以查看它们是否阻止了代码的运行:

enter image description here

由于问题只是刚刚发生,我想知道它是否与Excel或Windows 10更新有关,是否有人遇到过此问题?

除非有任何其他建议,否则我将尝试在旧版本的Excel上的Windows 7或XP的VM中运行代码,以尝试证明在更高版本的OS或Excel更新中存在此问题。< / p>

0 个答案:

没有答案