2015-11-05 87 views
3

我正在尝试使用Excel VBA创建自定义XML映射。我的XML文件是BookData.xml创建自定义XML映射

<?xml version='1.0'?> 
<BookInfo> 
    <Book> 
     <ISBN>989-0-487-04641-2</ISBN> 
     <Title>My World</Title> 
     <Author>Nancy Davolio</Author> 
     <Quantity>121</Quantity> 
    </Book> 
    <Book> 
     <ISBN>981-0-776-05541-0</ISBN> 
     <Title>Get Connected</Title> 
     <Author>Janet Leverling</Author> 
     <Quantity>435</Quantity> 
    </Book> 
    <Book> 
     <ISBN>999-1-543-02345-2</ISBN> 
     <Title>Honesty</Title> 
     <Author>Robert Fuller</Author> 
     <Quantity>315</Quantity> 
    </Book> 
</BookInfo> 

,并在Excel 2013我的VBA代码:

Sub Create_XSD() 
    Dim StrMyXml As String, MyMap As XmlMap 
    Dim StrMySchema As String 
    StrMyXml = "<BookInfo>" 
    StrMyXml = StrMyXml & "<Book>" 
    StrMyXml = StrMyXml & "<ISBN>Text</ISBN>" 
    StrMyXml = StrMyXml & "<Title>Text</Title>" 
    StrMyXml = StrMyXml & "<Author>Text</Author>" 
    StrMyXml = StrMyXml & "<Quantity>999</Quantity>" 
    StrMyXml = StrMyXml & "</Book>" 
    StrMyXml = StrMyXml & "<Book></Book>" 
    StrMyXml = StrMyXml & "</ BookInfo >" 

    ' Turn off async loading. 
    Application.DisplayAlerts = False 
    ' Add the string to the XmlMaps collection. 
    Set MyMap = ThisWorkbook.XmlMaps.Add(StrMyXml) 
    Application.DisplayAlerts = True 

    ' Create an empty file and output the schema. 
    StrMySchema = ThisWorkbook.XmlMaps(1).Schemas(1).XML 
    Open "C:\Documents\MySchema.xsd" For Output As #1 
    Print #1, StrMySchema 
    Close #1 
End Sub 

这是返回错误:

Error

在线:

Set MyMap = ThisWorkbook.XmlMaps.Add(StrMyXml) 

我想了解如何使用VBA构建自定义XML映射的逻辑,以便我可以在另一个(更复杂的)XML文件上使用它。我遵循的代码是here

那么,如何解决这个错误呢?

+1

删除'“”' – BruceWayne

+0

中的空格@BruceWayne看起来像MSDN dox需要更新:) –

回答

1

"</ BookInfo >"

+0

宾果!非常感谢,我没有注意到这些空间.... –

1

删除空格,您必须删除第2行(后昏暗StrMyXml作为字符串)逗号,并把该行的其余部分在它自己的一行命令昏暗在前面的。
它应该是这样的:

Dim StrMyXml As String

Dim MyMap As XmlMap

0

我也遇到了同样的错误,并BruceWayne的反应是快速正确的!

我在< /的BookInfo >(12线) 而且在<的BookInfo >(第4行)

仅在< /的BookInfo >卸下除去空间是不充分的。