如何使用VBA从Excel文件中将&符号写入XML文件?

时间:2012-12-17 18:13:35

标签: xml excel vba xls xlsm

首先,当谈到VBA时,我是一个完全新手,但不幸的是我被抛弃了这个代码,我必须处理它......

应用程序的作用是将信息复制到Excel xlsm文件中,并将其粘贴到XML文件中以供进一步处理。

问题是,直到我在其中一个Excel单元格中点击&符号,它才变得非常顺利,即:

我有一个有“R& D”的单元格,当我将它传递给XML文件时,我收到以下错误:

Run-time error '91':
Object variable or With block variable not set

请记住,我已经完成了VBA的垃圾。我尝试更改单元格中的内容为“R&& D”,“R & D”,但没有骰子。

我相信单元格的价值来自这行代码:

oCell.Offset(, 0).Value

但是我希望能帮助你逃脱&符号......

非常感谢,如果您需要更多信息,请告诉我。

3 个答案:

答案 0 :(得分:6)

我为Access编写了以下函数,但它应该可以与Excel一起使用。

Function CleanupStr(strXmlValue) As String  
 'description: Replace forbidden char. &'"<> by their Predefined General Entities   
 'author:      Patrick Honorez - www.idevlop.com   
   Dim sValue As String  
   If IsNull(strXmlValue) Then  
     CleanupStr = ""  
   Else  
     sValue = CStr(strXmlValue)  
     sValue = Replace(sValue, "&", "&amp;") 'do ampersand first !  
     sValue = Replace(sValue, "'", "&apos;")  
     sValue = Replace(sValue, """", "&quot;")  
     sValue = Replace(sValue, "<", "&lt;")  
     sValue = Replace(sValue, ">", "&gt;")  
     CleanupStr = sValue  
   End If  
End Function 

答案 1 :(得分:1)

您正在寻找的是在字符串中创建html实体的方法,这涉及使用&和任何特殊字符的代码。 '&安培;'是一个特殊的字符本身。

可能有代码需要更改才能执行此操作,但同时在代码中替换

&

&amp;

你应该解决这个特殊问题。

答案 2 :(得分:0)

我发现here这两个辅助函数:

Public Function HTMLToCharCodes(ByVal iString As String) As _
    String
    With New MSXML2.DOMDocument30
        .loadXML "<p>" & iString & "</p>"
        HTMLToCharCodes = _
            .selectSingleNode("p").nodeTypedValue
    End With
End Function

Public Function CharCodesToHTML(ByVal iString As String) As _
    String
Dim iXml As New MSXML2.DOMDocument30

    With iXml.createTextNode(iString)
        CharCodesToHTML = .xml
    End With
End Function