Option Explicit
Private fs
Private conn
Private Sub writeResult(rs, sqlFile)
Dim mode: mode = "2"
If WScript.Arguments.Count > 2 Then
If WScript.Arguments(2) = "1" Then
mode = "8"
End If
End If
Dim outFolder: outFolder = WScript.Arguments(1)
If Right(outFolder, 1) <> "\" Then
outFolder = outFolder & "\"
End If
Dim tsv: Set tsv = fs.OpenTextFile(outFolder & Replace(UCase(sqlFile.Name), ".SQL", ".xls"), mode, True)
Dim iCol
If mode = "2" Then
For iCol = 1 To rs.Fields.Count
tsv.Write rs.Fields(iCol - 1).Name & vbTab
Next
End If
tsv.WriteLine
Do Until rs.EOF
For iCol = 1 To rs.Fields.Count
tsv.Write rs.Fields(iCol - 1).Value & vbTab
Next
tsv.WriteLine
rs.MoveNext
Loop
tsv.Close
Set tsv = Nothing
End Sub
Private Function getSql(sqlFile)
WScript.Echo sqlFile.Name
Dim tsSql: Set tsSql = fs.OpenTextFile(sqlFile.Path)
Dim sqlText: sqlText = tsSql.ReadAll
tsSql.Close
Set tsSql = Nothing
getSql = sqlText
End Function
Private Function openRecordSet(sqlText)
Dim rs: Set rs = CreateObject("ADODB.Recordset")
With rs
.ActiveConnection = conn
.CursorType = 0
.LockType = 1
.Source = sqlText
.Open
End With
Set openRecordSet = rs
End Function
Private Sub openDB()
Set conn = CreateObject("ADODB.Connection")
conn.Open "aaa","bbb","ccc"
End Sub
Private Sub closeDB()
conn.Close
Set conn = Nothing
End Sub
Private Sub Main()
Set fs = CreateObject("Scripting.FileSystemObject")
openDB
Dim sqlFolder: Set sqlFolder = fs.GetFolder(WScript.Arguments(0))
Dim sqlFile
For Each sqlFile In sqlFolder.Files
Dim sqlText: sqlText = getSql(sqlFile)
Dim rs: Set rs = openRecordSet(sqlText)
Call writeResult(rs, sqlFile)
rs.Close
Set rs = Nothing
Next
Set sqlFile = Nothing
Set sqlFolder = Nothing
closeDB
Set fs = Nothing
End Sub
Call Main()