Excel 使用oXMLFile.SelectNodes的唯一节点值
因此,我通过读取XML文件,使用以下代码动态生成工作表名称:Excel 使用oXMLFile.SelectNodes的唯一节点值,excel,vba,Excel,Vba,因此,我通过读取XML文件,使用以下代码动态生成工作表名称: Set GenreNodes = oXMLFile.SelectNodes("/catalog/query/genre/text()") . . Private Sub CreateSheet(sheetName) Dim ws As Worksheet Set ws = ThisWorkbook.Sheets.Add(after:= _ ThisWorkbook.Sheets(ThisWor
Set GenreNodes = oXMLFile.SelectNodes("/catalog/query/genre/text()")
.
.
Private Sub CreateSheet(sheetName)
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(after:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = sheetName
End Sub
使用XML时,无需重复类似的类型标记即可完美工作,如:
<?xml version="1.0"?>
<catalog>
<query id="bk101">
<question>Do we have cloud security</question>
<answer>Yes</answer>
<genre>Cloud</genre>
</query>
<query id="bk102">
<question>Do we have locks on the door</question>
<answer>No</answer>
<comment>We have fingerprint access.</comment>
<genre>Physical Security</genre>
</query>
</catalog>
我们有云安全吗
对
云
门上有锁吗
不
我们有指纹识别。
人身安全
问题是,在本例中,当我有重复类型(SDLC)时,比如:
<?xml version="1.0"?>
<catalog>
<query id="bk101">
<question>Do we have cloud security</question>
<answer>Yes</answer>
<genre>Cloud</genre>
</query>
<query id="bk103">
<question>What SDLC Priciple is follwed?</question>
<answer>None</answer>
<comment>We have code ninjas.</comment>
<genre>SDLC</genre>
</query>
<query id="bk104">
<question>Do you have OSWP status?</question>
<answer>None</answer>
<comment>We plan to do next year.</comment>
<genre>SDLC</genre>
</query>
</catalog>
我们有云安全吗
对
云
遵循什么样的SDLC原则?
没有一个
我们有密码忍者。
SDLC
你有OSWP状态吗?
没有一个
我们计划明年做。
SDLC
Excel给我的名称已存在
错误。如何提取没有此错误的唯一节点名
谢谢。更新您的工作表创建代码,这样它就不会试图创建重复的工作表:
Private Sub CreateSheet(sheetName)
Dim ws As Worksheet
On Error Resume Next '<< ignore error if sheet doesn't exist
Set ws = ThisWorkbook.Sheets(sheetName)
On Error Goto 0 '<< stop ignoring errors
If ws Is Nothing Then
'sheet doesn't exist, so create it.
Set ws = ThisWorkbook.Sheets.Add(after:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = sheetName
End If
End Sub
Private子创建页(sheetName)
将ws设置为工作表
在示例中,您将使用什么工作表名称来代替SDLC?简单的解决方案是:每次添加工作表时,将名称添加到字典中。然后,在尝试添加工作表之前,检查字典中的名称,如果名称存在,则不要添加it@Daniel事实上,我会有重复的风格,所以让它们独一无二是没有意义的。我想需要更多的信息。您只能对工作表名称使用流派吗?是否要将所有条目添加为工作表,还是要避免重复?你能不能不把查询id加在类型后面?@Absince我想避免重复,我只能用类型作为工作表名。