VBScript-基于另一个变量的值创建动态变量名

VBScript-基于另一个变量的值创建动态变量名,vbscript,Vbscript,我已将“ServiceName”值存储在参数化代码行4的excel文件中 Format in Excel: ServiceName (Header) EisOrdAmd EntCanAmd 我想根据第5行传递的参数为'fnexquery'函数中的第三个参数使用动态变量名,即,对于第一个循环,变量名应为'strQuery_EisOrdAmd',对于第二个循环,变量名应为'strQuery_EntCanAmd' 1. ststrQuery_EisOrdAmd =

我已将“ServiceName”值存储在参数化代码行4的excel文件中

Format in Excel: 
    ServiceName     (Header)
    EisOrdAmd
    EntCanAmd
我想根据第5行传递的参数为'fnexquery'函数中的第三个参数使用动态变量名,即,对于第一个循环,变量名应为'strQuery_EisOrdAmd',对于第二个循环,变量名应为'strQuery_EntCanAmd'

1.  ststrQuery_EisOrdAmd = "Select * from EisOrdAmd"
2.  strQuery_EntCanAmd = "Select * from EntCanAmd"
3.  Do While (Not objRecordSet_TestData.EOF)
4.      strServiceName = Trim(objRecordSet_TestData.fields("ServiceName"))
5.      blnResponse_Request = fnExcQuery(strUser, strPwd, strQuery_<strServiceName>)            
        '1st Loop: strQuery_EisOrdAmd ; 2nd Loop: strQuery_EntCanAmd 
6.      objRecordSet_TestData.MoveNext
7.  Loop

如何为第三个参数创建动态变量名。我无法使用vbscript找到解决方案,请您提供帮助。

避免Eval或Execute,但使用字典:

Option Explicit

Dim dN : Set dN = CreateObject("Scripting.Dictionary")
dN("AA") = "aa"
dN("BB") = "bb"
Dim sN
For Each sN In Split("AA CC BB")
    If dN.Exists(sN) Then
       WScript.Echo sN, dN(sN)
    Else
       WScript.Echo sN, "???"
    End If
Next
输出:

cscript 31566748.vbs
AA aa
CC ???
BB bb
与其他语言中的eval一样,以这种方式执行动态代码时需要非常小心。话虽如此,您可以使用Execute函数来执行字符串,就像它是VBScript语句一样。在您的情况下,您需要使用以下语句:

Execute "blnResponse_Request = fnExcQuery(strUser, strPwd, strQuery_" & strServiceName & ")"      

我无法将您的解决方案与我的查询匹配。对不起,如果我无知的话。根据您的陈述,您希望我创建字典来存储变量名,而不是创建动态变量名。我编写的strQuery\u EisOrdAmd、strentcaname查询在我的.vbs文件中是硬编码的,但是在执行过程中要使用的查询是基于输入的excel文件给出的。因此,在这里实现字典逻辑有点困惑。你能帮忙吗。