1

そのようなcsvファイルがありますので、以下のコードで簡単に読むことができます。ただし、ご覧のとおり、csvにはname1、group1、status1、name2、group2などの列が複数あります。ユーザーごとに異なる数の列があります。私がobjRecordset.Fields.Item("Group1")何かを呼んでいるところでワイルドカードを使用する方法があるのか​​、("Group%")それともレコードが見つからなくなるまで番号を自動インクリメントできるのか疑問に思いました。

UserName、Domain、Site、MCO、Name1、Group1、Status1、Name2、Group2、Status2、Name3、Group3、Status3 Paolina、AA、Athens、Greece、Adobe Acrobat Pro、ACROBAT009、Live ,,,,,, George、AA、アテネ、ギリシャ、SpotFire 2.20、SPOTFIRE220、Live 、、、、、、、

option explicit

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001

Dim strPathtoTextFile, objConnection, objRecordSet, objNetwork
Dim wshshell, Username

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

Set objNetwork = CreateObject("WScript.Network")
userName = objNetwork.UserName

strPathtoTextFile = "C:\Hunter\vbs\" 'must have a trailing \

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & strPathtoTextFile & ";" & _
          "Extended Properties=""text;HDR=YES;FMT=Delimited"""

objRecordset.Open "SELECT * FROM Users.txt where [user name] like '" & UserName & "'", _
          objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
    Wscript.Echo "Name: " & objRecordset.Fields.Item("User Name")
    Wscript.Echo "Group: " & objRecordset.Fields.Item("Group1")
    Wscript.echo "Status:" & objRecordset.Fields.Item("Status1")
    objRecordSet.MoveNext
Loop
4

1 に答える 1

1

あなたの例は、最大グループ番号が最後のフィールドであることを示唆しているため、おそらく次のようになります。

objRecordset.Open "SELECT * FROM Users.txt where [user name] like '" _
      & UserName & "'", _
      objConnection, adOpenStatic, adLockOptimistic, adCmdText
MaxNum = _
      Replace(objRecordset.Fields(objRecordset.Fields.Count-1).Name,"Status","")
Do Until objRecordset.EOF
    Wscript.Echo "Name: " & objRecordset.Fields.Item("User Name")
    For i=1 to MaxNum
       Wscript.Echo "Group: " & objRecordset.Fields.Item("Group" & i)
       Wscript.echo "Status:" & objRecordset.Fields.Item("Status" & i)
    Next
    objRecordSet.MoveNext
Loop

私はテストしていませんが、一般的な考え方は成り立つはずです。

于 2012-08-08T11:38:59.733 に答える