本帖最后由 11119999hrs 于 2018-7-26 19:24 编辑
For i = 1 To k '遍历文件夹
f = Dir(Folder(i) & "*" & tz1 & "*.xls*") '通配符*.*表示所有文件,*.xls* Excel文件
Do Until f = ""
' ======================================================= 文件操作,获取数据 =========================================================================
Set cnn = CreateObject("ADODB.Connection") 'Connection对象赋值
cnn.Open = "Provider=Microsoft.ace.oledb.12.0;extended properties='excel 12.0;hdr=no';data source=" & Folder(i) & f '打开文件连接
Set rs = cnn.OpenSchema(20) 'Set rs = cnn.OpenSchema(adSchemaTables),创建数据表记录集
Do Until rs.EOF
If rs.Fields("TABLE_TYPE") = "TABLE" Then
s = Replace(rs("TABLE_NAME").Value, "'", "") '去除"’"(数字工作表)
If InStr(s, tz2) <> 0 And Right(s, 1) = "$" Then '判断工作表名称是否符合要求,工作表名称最后一位是“$”
' ----------------- 用SQL方法得到指定单元格数值,存入表格 ------------------------
For j = 1 To zs '|
ss = "[" & s & cel(j) & ":" & cel(j) & "]" '|
Sql = "select f1 from " & ss '|
Cells(m + 2, j + 1).CopyFromRecordset cnn.Execute(Sql) '| If j = zs Then Cells(m + 2, j + 2) = f '|
Next '|
m = m + 1 '|
' --------------------------------------------------------------------------------
End If
End If
rs.MoveNext
Loop
f = Dir '到下一个文件,跟上面的Dir(文件夹, 文件名)是一对,遍历所有文件
' =======================================================================================================================================================
Loop
Next
问题已解决,这是我写的代码的关键部分,请大家指正!!红字部分是不是有更好的写法呢?