使用VBS从Excel获取数据

我有一个这样的Excel文件:

使用VBS从Excel获取数据

此文件可以有两个以上的组。 在VBScript(适用于Siemens WinCC)中,我想按组(一个可视数组)收集数据。 使用对象和记录集,我可以浏览所有文件,但是如何仅按名称获取数字值?

我想要的是一个例子:

获取PLTTZF,1.043、0、1.5、1.043,其中Name = FORME 1.5 / 1 PLAN42

我尝试过这样的查询:

StrSQL = "SELECT [F4] FROM [01$] where [F2]='FORME 1.5/1 PLAN42'"

但是它没有返回值,因为名称仅写在一个单元格上。

您有解决方案吗?

houjunli2010 回答:使用VBS从Excel获取数据

我已经完成了该脚本:

Const EXCEL_FILE= "C:\Temp\datatest.xls"
Dim strConnectionString
Dim StrSQL
Dim objConnection,objCommand,objRecordset


Dim i,strNaam,line,flag,counter,counter2,lineOK,row
Dim Search
Search = "FORME 1.5/1 PLAN42"


strConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" &    EXCEL_FILE  & "; ReadOnly=False;"

'StrSQL = "SELECT [F3],[F4],[F5],[F6],[F7],[F8],[F9] FROM [01$] where [F2]='FORME 1.5/1 PLAN42'"
StrSQL = "SELECT * from [01$]"

Set objConnection = CreateObject("ADODB.Connection")

objConnection.ConnectionString = strConnectionString

objConnection.Open

Set objCommand = CreateObject("ADODB.Command")

objCommand.ActiveConnection = objConnection

objCommand.CommandText = strSQL

Set objRecordset=objCommand.Execute

objRecordset.Movefirst

line = 0
flag = 0
counter = 0
counter2 = 0
lineOK = 0
row = 0

Dim tmpvalue
While Not objRecordset.EOF
    line = line + 1

    For i = 0 To 8'objRecordset.Fields.Count - 1
        HMIRuntime.Trace "Data : " & objRecordset.Fields(i).Name & " " & objRecordset.Fields(i).Value & vbNewline

        If flag = 1  Then

            'If counter < 9  Then
                tmpvalue = tmpvalue & objRecordset.Fields(i).Value & ";"
                counter = counter + 1

            'End If 


            'If counter = 9 Then
                'counter = 0
                'tmpvalue = tmpvalue & vbNewline
            'End If
            'HMIRuntime.Trace "Data : " & objRecordset.Fields(i).Name & " " & objRecordset.Fields(i).Value & vbNewline
            'strNaam = objRecordset.Fields(0).Value
            'HMIRuntime.Trace "Data2 : " & strNaam & vbNewline
            'HMIRuntime.Trace "Line : " & line & vbNewline
        End If

        If objRecordset.Fields(i).Value = Search Then
            flag = 1
            lineOK = line
        End If

        If line = lineOK + 5 Then
            flag = 0
        End If

        If i = 8 Then 
            tmpvalue = tmpvalue & vbNewline
        End If
    Next    

    objRecordset.MoveNext

Wend
HMIRuntime.Trace tmpvalue

这正在起作用,它给了我结果:

;;;;;;;
;;PLTZF;1.043;0;;1.5;1.043;;
;;FRTZF;0.622;0; ;1;0.622; ;
;;MAX;0.522;0;;0.75;0.522;;
;;MIN;-0.389;0;;0.75;-0.389; ;

但是记录集缺少某些列,如果我浏览所有数据,则记录集找不到“ Actual”,“ Nominal”,“ Tol +”和“ Dev”:

Data : F1 
Data : F2 
Data : F3 
Data : F4 
Data : F5 
Data : F6 Tol -
Data : F7 
Data : F8 
Data : F9 Out

因此,举例来说,我不会得到“ -0,75”,我不知道为什么:

Data : F3 MAX
Data : F4 0.522
Data : F5 0
Data : F6 
Data : F7 0.75
Data : F8 0.522
,

使用其他驱动程序解决。

本文链接:https://www.f2er.com/3110445.html

大家都在问