Vbscript 用于自动创建文件的VB脚本(按需机会!)

Vbscript 用于自动创建文件的VB脚本(按需机会!),vbscript,automation,Vbscript,Automation,我是一名财务人员,不是VB脚本大师,但我想知道是否有人可以根据我的要求创建一个示例VB脚本 无论谁先提供解决方案,并且解决方案在我这边有效,都将有机会(当然是付费的)在我工作的地方创建更多这些定制解决方案。这不是一个全职职位,而是一个随需应变的机会 要求: 能够读取由逗号分隔且具有各种条目的文本文件 例如,在文本文件中。。。 SEC_E_All_Entities,HSII,SL_维度,读写,@IDESCENDANTS,N Secu E__ENT_Americas,Americas,SL_维度,读

我是一名财务人员,不是VB脚本大师,但我想知道是否有人可以根据我的要求创建一个示例VB脚本

无论谁先提供解决方案,并且解决方案在我这边有效,都将有机会(当然是付费的)在我工作的地方创建更多这些定制解决方案。这不是一个全职职位,而是一个随需应变的机会

要求: 能够读取由逗号分隔且具有各种条目的文本文件

例如,在文本文件中。。。 SEC_E_All_Entities,HSII,SL_维度,读写,@IDESCENDANTS,N Secu E__ENT_Americas,Americas,SL_维度,读取,成员,N

并执行以下操作

  • 根据第一个值为每个条目创建一个XML文件
  • 例如:
    创建SEC_E_All_Entities.XML和SEC_E_ENT_Americas.XML

  • 在每个文件中,将内容写入可以查看值如何匹配每个标记的位置 例如:

    在SEC_E_All_Entities.XML文件中,写入

    <?xml version="1.0" encoding="UTF-8" ?>
    <acls>
    <acl>
     <name>SEC_E_All_Entities</name>
     <objectName>HSII</objectName>
     <objectType>SL_DIMENSION</objectType>
     <accessMode>READWRITE</accessMode>
     <flag>@IDESCENDANTS</flag>
     <isUser>N</isUser>
    </acl>
    </acls>
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <acls>
    <acl>
     <name>SEC_E_ENT_Americas</name>
     <objectName>Americas</objectName>
     <objectType>SL_DIMENSION</objectType>
     <accessMode>READ</accessMode>
     <flag>MEMBER</flag>
     <isUser>N</isUser>
    </acl>
    </acls>
    
    
    SEC_E_所有实体
    谢
    SL_维数
    读写
    @理想主义者
    N
    
    在SEC_E_All_Americas.XML文件中,写入

    <?xml version="1.0" encoding="UTF-8" ?>
    <acls>
    <acl>
     <name>SEC_E_All_Entities</name>
     <objectName>HSII</objectName>
     <objectType>SL_DIMENSION</objectType>
     <accessMode>READWRITE</accessMode>
     <flag>@IDESCENDANTS</flag>
     <isUser>N</isUser>
    </acl>
    </acls>
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <acls>
    <acl>
     <name>SEC_E_ENT_Americas</name>
     <objectName>Americas</objectName>
     <objectType>SL_DIMENSION</objectType>
     <accessMode>READ</accessMode>
     <flag>MEMBER</flag>
     <isUser>N</isUser>
    </acl>
    </acls>
    
    
    美国证券交易所
    美洲
    SL_维数
    阅读
    成员
    N
    
    问候,, Judy

    示例脚本

    'Step 1 - Read the file and store the content in memory (an array)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Users\pankaj.jaju\Desktop\StackOverflow\acls.txt", 1)
    arrFile = Split(objFile.ReadAll, vbCrLf) 'will store one line in each array index
    objFile.Close
    
    'Step 2 - Load the XML template in memory 
    Set xmlTemplate = CreateObject("MSXML2.DOMDocument.6.0")
    With xmlTemplate
        .ValidateOnParse = True
        .Async = False
        .LoadXML "<?xml version=""1.0"" encoding=""UTF-8"" ?>" & _
                    "<acls>" & _
                        "<acl>" & _
                            "<name></name>" & _
                            "<objectName></objectName>" & _
                            "<objectType></objectType>" & _
                            "<accessMode></accessMode>" & _
                            "<flag></flag>" & _
                            "<isUser></isUser>" & _
                        "</acl>" & _
                    "</acls>"    
    End With
    
    'Step 3 - Load the relevant fields for which the data is to be set from csv file
    Set nodeFields = xmlTemplate.DocumentElement.SelectNodes("/acls/acl/*")
    
    'Step 4 - Read each line of text and create XML
    For i = LBound(arrFile) To UBound(arrFile)
        arrLine = Split(arrFile(i), ",") 'will split the line into various fields (to be used to create the xml)
        For j = LBound(arrLine) To UBound(arrLine) 'set values for each field
            nodeFields(j).Text = arrLine(j)
        Next
        Set xmlNew = xmlTemplate
        xmlNew.Save objFSO.BuildPath("C:\Users\pankaj.jaju\Desktop\StackOverflow\", nodeFields(0).Text & ".xml") 'copy modified template as new xml file
        Set xmlNew = Nothing    
    Next
    
    “步骤1-读取文件并将内容存储在内存中(数组)
    设置objFSO=CreateObject(“Scripting.FileSystemObject”)
    设置objFile=objFSO.OpenTextFile(“C:\Users\pankaj.jaju\Desktop\StackOverflow\acls.txt”,1)
    arrFile=Split(objFile.ReadAll,vbCrLf)”将在每个数组索引中存储一行
    objFile.Close
    '步骤2-在内存中加载XML模板
    设置xmlTemplate=CreateObject(“MSXML2.DOMDocument.6.0”)
    使用xmlTemplate
    .ValidateOnParse=True
    .Async=False
    .LoadXML“”&_
    "" & _
    "" & _
    "" & _
    "" & _
    "" & _
    "" & _
    "" & _
    "" & _
    "" & _
    ""    
    以
    '步骤3-加载要从csv文件中为其设置数据的相关字段
    设置nodeFields=xmlTemplate.DocumentElement.SelectNodes(“/acls/acl/*”)
    '步骤4-阅读每行文本并创建XML
    对于i=LBound(arrFile)到UBound(arrFile)
    arrLine=Split(arrFile(i),“,”)将行拆分为多个字段(用于创建xml)
    对于j=LBound(arrLine)到UBound(arrLine)'设置每个字段的值
    节点字段(j)。Text=arrLine(j)
    下一个
    设置xmlNew=xmlTemplate
    xmlNew.Save objFSO.BuildPath(“C:\Users\pankaj.jaju\Desktop\StackOverflow\”,nodeFields(0.Text&“.xml”)”将修改后的模板复制为新的xml文件
    设置xmlNew=Nothing
    下一个
    
    csv文件的结构是否保持静态?如中所示,每行将有6个值?这是正确的,Pankaj。谢谢你的提问。谢谢你的快速回复,潘卡吉!我将让我们的一位业务分析师为我们设置这个,并在我们的测试中回复您。非常感谢!别担心。请注意,这是一个没有错误处理的基本脚本,而且我只使用了您提供的文件结构!明亮的我们还有更多的工作要做。我们怎样才能和你联系?