4

まず第一に、私はVBAに関しては完全な初心者ですが、残念ながら私はこのコードをダンプされ、それに対処する必要があります...

アプリケーションが行うことは、Excel xlsmファイル内の情報をコピーし、それをXMLファイルに貼り付けてさらに処理することです。

つまり、Excelセルの1つでアンパサンドを打つまで、すべてが非常にスムーズになります。

「R&D」のあるセルがあり、それをXMLファイルに渡すと、次のエラーが発生します。

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

私はVBAで完全にゴミだということを覚えておいてください。「R&&D」、「R &D」のセルの内容を変更してみましたが、サイコロはありません。

セルの値は、次のコード行から得られると思います。

oCell.Offset(, 0).Value

しかし、私はアンパサンドをどのように逃れるかについていくつかの助けが欲しいです...

よろしくお願いします。さらに情報が必要な場合はお知らせください。

4

3 に答える 3

9

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 
于 2012-12-18T15:26:04.220 に答える
1

あなたが探しているのは、文字列に html エンティティを作成する方法です。これには&、特殊文字のコードを使用することが含まれます。「&」は特殊文字そのものです。

これを行うために変更するコードがあるかもしれませんが、それまでの間、コードを置き換えます

&

&amp;

その特定の問題を解決する必要があります。

于 2012-12-17T18:19:40.947 に答える
0

ここで、次の 2 つのヘルパー関数を見つけました。

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
于 2013-10-28T08:10:46.663 に答える