`

VBA 出力EXCLE的数据成xml (带层次关系)

阅读更多



Public Sub Workbook_BeforeSave()

    Dim fileName As String
    Dim firstIndex As Integer
    Dim lastIndex As Integer
    Dim rootNodeName As String
    Dim xmlDoc As MSXML2.DOMDocument
   
    fileName = Worksheets(2).Range("B8").Value
    firstIndex = Worksheets(2).Range("B10").Value
    lastIndex = Worksheets(2).Range("B11").Value
    rootNodeName = Worksheets(2).Range("B12").Value
   
    If fileName = "" Then
        MsgBox ("僼傽僀儖僷僗傪巜掕偔偩偝偄丅")
        Exit Sub
    End If
   
    Set xmlDoc = New MSXML2.DOMDocument
   
    Set rootNode = xmlDoc.createElement(rootNodeName)
    Set xmlDoc.DocumentElement = rootNode
    Set Header = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
    xmlDoc.InsertBefore Header, xmlDoc.ChildNodes(0)
   
    xmlDoc.Save fileName
    Set xmlDoc = Nothing
   
    Call OutputSchema(fileName, firstIndex, lastIndex)
   
End Sub

Public Sub OutputSchema(fileName, firstIndex, lastIndex)
    Dim caseIndex As Integer
    Dim pmstartIndex As Integer
   
    'case僨乕僞start
    caseIndex = Worksheets(1).Range("IV1").End(xlToLeft).Column
   
    '僷儔儊乕僞楍栚傪庢摼
    For i = 1 To caseIndex
        cellValue = Worksheets(1).Cells(1, i).Value
        If cellValue = "pmstart" Then
            pmstartIndex = i
            Exit For
        End If
    Next
   
    Dim nodeIndex As Integer
    Dim xmlNode(100)     As IXMLDOMElement '梫慺

    Set xmlDoc = New MSXML2.DOMDocument
    xmlDoc.Load fileName

    Set Root = xmlDoc.DocumentElement
    Set xmlNode(1) = Root
    For nodeIndex = firstIndex To lastIndex
        nodeName = Worksheets(1).Cells(nodeIndex, pmstartIndex).Value
        attrValue = Worksheets(1).Cells(nodeIndex, pmstartIndex + 1).Value
        caseValue = Worksheets(1).Cells(nodeIndex, pmstartIndex + 2).Value
       
        For j = 2 To pmstartIndex
            PmName = Worksheets(1).Cells(nodeIndex, j).Value
            nextPmName = Worksheets(1).Cells(nodeIndex + 1, j + 1).Value
            If Not PmName = "" Then
                Set xmlNode(j) = xmlNode(j - 1).appendChild(xmlDoc.createElement(nodeName))
                If Not attrValue = "" Then
                    Set xmlAttr = xmlNode(j).Attributes.setNamedItem(xmlDoc.createAttribute("nameSpace"))
                    xmlAttr.nodeValue = attrValue
                End If
                If nextPmName = "" Or j = pmstartIndex - 1 Then
                    xmlNode(j).Text = caseValue & vbCrLf
                End If

                Exit For
            End If
        Next
    Next
    xmlDoc.Save fileName
    Set xmlDoc = Nothing
End Sub
分享到:
评论

相关推荐

    EXCEL表格用VBA更新双色球数据源代码

    在Excel表格中,VBA(Visual Basic for Applications)是一种强大的编程工具,允许用户自定义功能,自动化任务,以及处理各种复杂的数据操作。本主题聚焦于如何利用VBA更新双色球数据源,这对于彩票数据分析或者爱好...

    vba 在excle中的应用

    ### VBA在Excel中的应用:禁止用户添加新工作表 #### 概述 VBA(Visual Basic for Applications)是Microsoft Office套件中的一个重要组成部分,它为用户提供了强大的自动化办公工具的能力。通过VBA,用户可以编写...

    excle转xml(带源码)

    在IT行业中,Excel和XML是两种非常常见的数据存储格式,各有其特定的使用场景和优势。Excel适合处理表格数据,直观易用,而XML则是一种结构化的数据交换格式,适用于跨平台、网络传输和数据存储。本文将详细介绍如何...

    excle vba简易入门

    Excel VBA(Visual Basic for Applications)是Microsoft Excel中的编程环境,允许用户自定义工作簿、工作表、图表和应用程序的功能。VBA结合了Excel的强大功能和VB语言的易用性,使得用户能够创建宏,自动化任务,...

    批量EXCLE VBA转换成PDF

    自己编写的PDF转换工具,只要安装了Acrobat 9 Pro.exe,并引用库,即可实现批量EXCLE VBA转换成PDF,不限文件数!

    excle数据可视化图表模板.rar

    "excle数据可视化图表模板.rar"这个压缩包中包含了多种图表类型,这些模板可以帮助我们快速创建专业且吸引人的数据展示。以下是这些图表类型的详细说明: 1. **PPT变形柱形状**:这种图表通常用于在PowerPoint演示...

    ASP.NET导出数据为excle或者xml.wps

    ASP.NET导出数据为excle或者xml

    读取excle数据读取excle数据读取excle数据

    读取excle数据 并对数据进行一定的分析。 可用于教师考勤。读取excle数据 并对数据进行一定的分析。 可用于教师考勤。读取excle数据 并对数据进行一定的分析。 可用于教师考勤。读取excle数据 并对数据进行一定的...

    excle数据导入oracle

    而Oracle数据库则是一个关系型数据库管理系统,广泛应用于企业级的数据存储和管理。 **步骤1:数据准备** 在进行数据导入前,你需要确保Excel中的数据已经整理好,格式符合Oracle表结构的要求。包括但不限于删除...

    Excel VBA上传数据到SQL server

    在企业信息化初期,大部分数据都会通过excel进行管理; 作为IT人员,其实对excel又爱又恨,爱其灵活易用,恨其数据不能统一管理, 故若要把excel数据统一管理,能想到的办法...然后通过excle调取数据库的数据进行呈现;

    JAVA版XML转EXCLE

    XML文件通常包含一系列由标签定义的元素,这些元素组织成层次结构,便于程序解析和操作。XML文件可以用来存储复杂的数据结构,如数据库记录、配置信息或业务数据。然而,对于非程序员来说,XML文件可能难以阅读和...

    excle-VBA-窗体控件属性中文解释

    本资源“excle-VBA-窗体控件属性中文解释”是一个详细的查询大全,针对53个不同窗体控件的属性提供了中文解释,这对于理解和操作Excel VBA中的用户界面设计至关重要。 1. **控件类型**: - **按钮(Button)**:用户...

    导出EXCLE数据ExcelReader

    标题中的“导出EXCLE数据ExcelReader”表明我们要讨论的是一个与Excel数据处理相关的工具或技术,特别是关于从Excel文件中读取数据的部分。在IT领域,这通常涉及到电子表格编程,例如使用特定的库或者API来解析Excel...

    Excle VBA实现彩票号码随机生成

    Excle VBA实现彩票号码随机生成,彩票号码随机生成器

    excle 数据操作大全

    在Excel数据操作中,我们经常会遇到需要读取、写入以及处理大量数据的情况。这篇详细的指南将涵盖Excel文件处理的各个方面,确保你能够熟练地在单个工作表(sheet)和多个工作表之间,甚至跨多个Excel文件进行操作。...

    excle中数据导入到sql数据库(asp.net)

    综上所述,"excle中数据导入到sql数据库(asp.net)"这个任务涵盖了数据读取、数据处理、Web开发、数据库操作等多个IT领域的知识点,要求开发者具备扎实的编程基础和跨领域技术理解。通过精心设计的ASP.NET应用程序,...

    excle中的vba应用电子书

    1. VBA基础知识:VBA的基础包括变量声明、数据类型、控制结构(如If...Then...Else、For...Next、While...Wend)、函数和过程。理解这些基本元素是编写VBA宏的关键。 2. VBA环境:在Excel中,通过开发者工具菜单...

    C#+Excle数据导入导出

    针对Excle数据进行导入、导出

    EXCLE生成XML,开票软件数据接口,绝对可用,MS EXCEL打开

    EXCLE生成XML,开票软件数据接口,绝对可用,MS EXCEL打开才可以生成,WPS不行

Global site tag (gtag.js) - Google Analytics