首页 > 解决方案 > 用于自动创建文件的 VB 脚本(按需提供机会!)

问题描述

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

谁首先提供解决方案并且解决方案对我有效,将有机会(当然是付费的)在我工作的地方创建更多这些自定义解决方案。这不是全职职位,而是更多的按需机会。

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

例如,在文本文件中... SEC_E_All_Entities,HSII,SL_DIMENSION,READWRITE,@IDESCENDANTS,N SEC_E_ENT_Americas,Americas,SL_DIMENSION,READ,MEMBER,N

并执行以下...

  1. 根据第一个值为每个条目创建一个 XML 文件

例如:
创建 SEC_E_All_Entities.XML 和 SEC_E_ENT_Americas.XML

  1. 在每个文件中,写下您可以看到值如何匹配每个标签的内容。

例如:

在 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>

在 SEC_E_All_Americas.XML 文件中,写入...

<?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>

问候,朱迪

标签: vbscriptautomation

解决方案


示例脚本

'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

推荐阅读