xml - vba excel : need to load an xml file and write specific values (got from current) excel then save it

标签 xml vba excel

我对 VBA、xml 和一般编程是全新的,我只是试图从许多站点获取信息,但似乎我无法解决我的问题,即:

我的目标是:对于最终用户,他必须将框架路径和其他有用的值输入到 excel 文件中并选择运行测试,然后代码将获取这些值,加载和 xml 文件,将这些值输入到 xml 中,保存并保存开始申请。这些值将被调用到应用程序中的其他脚本使用。

我的 pb 似乎 excel 根本没有加载 xml(甚至继续调试,他说“运行时错误,无法找到指定的路径;下面是正在使用的代码以及 xml 格式:

Option Explicit

Private Sub RunTest_Click()
Dim envFrmwrkPath As String
Dim ApplicationName As String
Dim TestIterationName As String
Dim objfso, app, Eval As Object
Dim i, Msgarea




envFrmwrkPath = ActiveSheet.Range("E6").Value
ApplicationName = ActiveSheet.Range("E4").Value
TestIterationName = ActiveSheet.Range("E8").Value


Set EnvVarXML = CreateObject("Microsoft.XMLDOM")

EnvVarXML.Load (envFrmwrkPath & "Environment\EnvVar.xml")

For Each UIElement In EnvVarXML.SelectNodes("Environment/Variable")

        Set Field = Eval(objUIElement.SelectSingleNode("Name").Text)
        Field.Value = UIElement.SelectSingleNode("Value").Text

        Set EnvVarXML = CreateObject("Microsoft.XMLDOM")

        EnvVarXML.Load (envFrmwrkPath & "Environment\EnvVar.xml")

Next

Set EnvVarXML = Nothing

Set objfso = CreateObject("Scripting.FileSystemObject")

If Not objfso.FolderExists(envFrmwrkPath) Then

    MsgBox envFrmwrkPath & "- Folder not found. Setting not saved"

    Exit Sub

End If

Set objfso = Nothing

Set EnvVarXML = CreateObject("Microsoft.XMLDOM")

EnvVarXML.Load (envFrmwrkPath & "Environment\EnvVar.xml")

For Each UIElement In EnvVarXML.SelectNodes("Environment/Variable")

        Set Field = Eval(UIElement.SelectSingleNode("Name").Text)

        UIElement.SelectSingleNode("Value").Text = Field.Value

        If UIElement.SelectSingleNode("Name").Text = "envFrmwrkPath" Then

            Application.DisplayAlerts = False

            Set app = CreateObject("QuickTest.Application")

            app.Launch
            app.Visible = True
            app.WindowState = "Maximized"
            app.Open envFrmwrkPath & "\Driver", False
            app.Folders.RemoveAll
            app.Folders.Add (envFrmwrkPath)
            app.Test.Settings.Resources.DataTablePath = "<Default>"
            app.Test.Settings.Resources.Libraries.RemoveAll

            app.Test.Settings.Resources.Libraries.Add (envFrmwrkPath & _
              "FunctionLibrary\VTL_Util_Lib.vbs")

            app.Test.Settings.Resources.Libraries.Add (envFrmwrkPath & _
              "FunctionLibrary\VTL_BP_Lib.vbs")

            app.Test.Settings.Resources.Libraries.Add (envFrmwrkPath & _
               "FunctionLibrary\VTL_Engine_Lib.vbs")

            app.Test.Settings.Resources.Libraries.Add (Field.Value & _
                "FunctionLibrary\RecoveryScenario.qfl")

            If app.Test.Settings.Recovery.Count > 0 Then
                 app.Test.Settings.Recovery.RemoveAll
            End If

            app.Options.Run.RunMode = "Fast"

            app.Options.Run.ViewResults = False

            For i = 1 To app.Test.Actions.Count
                app.Test.Actions(i).ObjectRepositories.RemoveAll

                app.Test.Actions(i).ObjectRepositories.Add (envFrmwrkPath & _
                           "Ressources\ObjectRepository\shared_repository.tsr")

            Next

            app.Test.Save

        End If

    Next

    ' here i got the error but the pb is earlier i think!
    EnvVarXML.Save (envFrmwrkPath & "Environment\EnvVar.xml") 

End Sub

=============

xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Environment>
    <Variable>
        <Name>envversion</Name>
        <Caption>version :</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>Version</Description>
    </Variable>
    <Variable>
        <Name>envAppName</Name>
        <Caption>Application name :</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>Name of the Application Under Test</Description>
    </Variable>
    <Variable>
        <Name>envFrmwrkPath</Name>
        <Caption>Framework folder path:</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>Path of the automation framework</Description>
    </Variable>
    <Variable>
        <Name>envIP</Name>
        <Caption>IP Address:</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>IP Address</Description>
    </Variable>
    <Variable>
        <Name>envLogin</Name>
        <Caption>Login:</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>Login</Description>
    </Variable>
    <Variable>
        <Name></Name>
        <Caption>Password:</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>Password</Description>
    </Variable>
    <Variable>
        <Name>envLogs</Name>
        <Caption>Logs:</Caption>
        <Type>TEXTAREA</Type>
        <Value></Value>
        <Description>logs</Description>
    </Variable>
    <Variable>
        <Name>envTestIteration</Name>
        <Caption>Test iteration name:</Caption>
        <Type>TEXT</Type>
        <Value></Value>
        <Description>TestIterationName Subfolder to be created</Description>
    </Variable>
</Environment>

======================

很抱歉,很长的文字,希望尽可能清楚......我感谢有关如何解决此问题的帮助,尤其是了解如何随时执行此操作。谢谢。

最佳答案

如果 envFrmwrkPath 的值不以 \ 结尾那么你的路径很可能会被破坏。例如,如果 envFrmwrkPathC:\Shared Documents那么您尝试加载/保存的路径将是:
C:\Shared DocumentsEnvironment\EnvVar.xml
确保单元格 E6 中的值以 \ 结尾然后再试一次

关于xml - vba excel : need to load an xml file and write specific values (got from current) excel then save it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395086/

相关文章:

excel - 使用间接引用另一张工作表上的 Excel 命名范围

java - 如何在Android Studio中的EditText中填充 float 和整数

python - 属性错误 : xmlNode instance has no attribute 'isCountNode'

xml - XPath 查询通过某种实现来选择元素

vba - ADO 记录集未在 VBA 中保持打开状态 - "Operation is not allowed when the object is closed"

excel - 如何在 Excel 的 Select Case 中使用多个条件

xml - XSLT - 需要复制多个命名空间

excel - 使用VBA创建图表并删除边框

python - 根据文件名将目录中的多个 .xlsx 文件读入单独的 Pandas 数据框中

python - 使用 pandas 处理 csv 文件时处理 null 或 NaN 类型时出现错误