You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将行导出为独立XML文件时遇Permission 70权限错误求助

解决VBA导出XML时的Permission 70权限错误

可能的问题根源

  • 路径格式不完整:sFolder单元格中的值可能仅为文件夹路径,未包含具体的XML文件名,导致DOMDocument尝试将内容保存到文件夹而非文件,触发权限错误。
  • 文件被占用:目标路径下的同名XML文件可能已被其他程序(如记事本、Excel)打开,处于锁定状态无法写入。
  • 路径解析异常:路径包含空格或特殊字符时,未做转义处理导致程序无法正确识别目标位置。
  • DOMDocument版本兼容:使用的MSXML2.DOMDocument基础版本可能存在权限验证的兼容性问题。

针对性解决方案

1. 补全完整文件路径

如果表格第5列仅存储文件夹路径,需在代码中拼接文件名(比如用第一列的Name值作为文件名):

' 替换原有的sFolder直接保存逻辑
sFullPath = sFolder & "\" & sname & ".xml"
doc.Save sFullPath

确保最终路径是类似C:\Users\XXX\Desktop\张三.xml的完整文件路径,而非仅文件夹地址。

2. 关闭被占用的目标文件

运行代码前,手动关闭目标路径下所有已打开的XML文件,解除文件锁定状态。

3. 处理含特殊字符的路径

若路径包含空格或特殊字符,用双引号包裹路径避免解析错误:

doc.Save Chr(34) & sFullPath & Chr(34)

4. 更换DOMDocument版本

改用更高版本的DOMDocument提升兼容性:

Set doc = CreateObject("MSXML2.DOMDocument.6.0")

5. 添加错误捕获定位问题

在代码中加入错误处理,精准定位出错的行和路径:

Sub Export()
    On Error GoTo ErrorHandler
    
    sTemplateXML = _
            "<data>" + vbNewLine + _
            "   <Name/>" + vbNewLine + _
            "   <AXCustNum/>" + vbNewLine + _
            "   <CustomerName/>" + vbNewLine + _
            "   <Title/>" + vbNewLine + _
            "   <Folder/>" + vbNewLine + _
            "</data>" + vbNewLine

     Set doc = CreateObject("MSXML2.DOMDocument.6.0")
     doc.async = False
     doc.validateOnParse = False
     doc.resolveExternals = False

    With Sheets("SAL Checked File Names 1.9")
      lLastRow = .UsedRange.Rows.Count

     For lRow = 2 To lLastRow
       sname = .Cells(lRow, 1).Value
       saxcustnum = .Cells(lRow, 2).Value
       scustomername = .Cells(lRow, 3).Value
       sTitle = .Cells(lRow, 4).Value
       sFolder = .Cells(lRow, 5).Value
       
       sFullPath = sFolder & "\" & sname & ".xml"
       
       doc.LoadXML sTemplateXML
       doc.getElementsByTagName("Name")(0).appendChild doc.createTextNode(sname)
       doc.getElementsByTagName("AXCustNum")(0).appendChild doc.createTextNode(saxcustnum)
       doc.getElementsByTagName("CustomerName")(0).appendChild doc.createTextNode(scustomername)
       doc.getElementsByTagName("Title")(0).appendChild doc.createTextNode(sTitle)
       doc.getElementsByTagName("Folder")(0).appendChild doc.createTextNode(sFolder)

       doc.Save sFullPath
     Next
     
    End With
    Exit Sub
    
ErrorHandler:
    MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description & vbCrLf & "出错行:" & lRow & vbCrLf & "目标路径:" & sFullPath, vbCritical
    Set doc = Nothing
End Sub

验证步骤

  1. 手动在目标路径创建测试XML文件,确认该位置具备读写权限。
  2. 检查表格第5列的路径格式,确保每个条目都指向有效文件夹。
  3. 运行修改后的代码,根据错误提示进一步排查具体问题。

内容的提问来源于stack exchange,提问作者Sallie Francis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:54:26