Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3563|回复: 1

[已解决]提取所有名字

[复制链接]
发表于 2014-11-9 16:29 | 显示全部楼层 |阅读模式
提取所有名字,实现效果。
  1. Sub Get_All_Names()
  2.     Cells.Clear
  3.     Dim arr, s&, i&, j&, k$, myPath$, myFile$
  4.     myPath = ThisWorkbook.Path & ""
  5.     myFile = Dir(myPath & "*.xls*")
  6.     s = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1
  7.     ReDim arr(1 To 1000, 1 To s)
  8.     Do While myFile <> ""
  9.         If myFile <> ThisWorkbook.Name Then
  10.             j = j + 1
  11.             i = 1
  12.             arr(1, j) = Left(myFile, InStrRev(myFile, ".") - 1) & ":"
  13.             Set cnn = CreateObject("ADODB.Connection")
  14.             cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & myPath & myFile
  15.             Set rs = cnn.OpenSchema(20)
  16.             Do Until rs.EOF
  17.                 If rs.Fields("TABLE_TYPE") = "TABLE" Then
  18.                     i = i + 1
  19.                     k = Replace(rs("TABLE_NAME").Value, "'", "")
  20.                     arr(i, j) = Left(k, Len(k) - 1)
  21.                 End If
  22.                 rs.MoveNext
  23.             Loop
  24.         End If
  25.         myFile = Dir
  26.     Loop
  27.     Range("A3").Resize(i, j) = arr
  28.     Cells.EntireColumn.AutoFit
  29.     rs.Close
  30.     cnn.Close
  31.     Set rs = Nothing
  32.     Set cnn = Nothing
  33. End Sub
复制代码
最佳答案
2014-11-9 17:28
  1. Sub Get_All_Names()
  2.     Cells.Clear
  3.     Dim arr, s&, i&, k$, myPath$, myFile$, sr$
  4.     myPath = ThisWorkbook.Path & ""
  5.     myFile = Dir(myPath & "*.xls*")
  6. '    s = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1
  7.     ReDim arr(1 To 1000, 1 To 2)
  8.     Do While myFile <> ""
  9.         If myFile <> ThisWorkbook.Name Then
  10.             sr = Left(myFile, InStrRev(myFile, ".") - 1)
  11.             Set cnn = CreateObject("ADODB.Connection")
  12.             cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & myPath & myFile
  13.             Set rs = cnn.OpenSchema(20)
  14.             Do Until rs.EOF
  15.                 If rs.Fields("TABLE_TYPE") = "TABLE" Then
  16.                     i = i + 1
  17.                     k = Replace(rs("TABLE_NAME").Value, "'", "")
  18.                     arr(i, 1) = sr
  19.                     arr(i, 2) = "'" & Left(k, Len(k) - 1)
  20.                 End If
  21.                 rs.MoveNext
  22.             Loop
  23.         End If
  24.         myFile = Dir
  25.     Loop
  26.     Range("A3").Resize(i, 2) = arr
  27.     Range("A2:B2") = Array("工作簿名字", "工作表名字")
  28.     Cells.EntireColumn.AutoFit
  29.     rs.Close
  30.     cnn.Close
  31.     Set rs = Nothing
  32.     Set cnn = Nothing
  33. End Sub
复制代码

get names.rar

41.65 KB, 下载次数: 18

发表于 2014-11-9 17:28 | 显示全部楼层    本楼为最佳答案   
  1. Sub Get_All_Names()
  2.     Cells.Clear
  3.     Dim arr, s&, i&, k$, myPath$, myFile$, sr$
  4.     myPath = ThisWorkbook.Path & ""
  5.     myFile = Dir(myPath & "*.xls*")
  6. '    s = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1
  7.     ReDim arr(1 To 1000, 1 To 2)
  8.     Do While myFile <> ""
  9.         If myFile <> ThisWorkbook.Name Then
  10.             sr = Left(myFile, InStrRev(myFile, ".") - 1)
  11.             Set cnn = CreateObject("ADODB.Connection")
  12.             cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & myPath & myFile
  13.             Set rs = cnn.OpenSchema(20)
  14.             Do Until rs.EOF
  15.                 If rs.Fields("TABLE_TYPE") = "TABLE" Then
  16.                     i = i + 1
  17.                     k = Replace(rs("TABLE_NAME").Value, "'", "")
  18.                     arr(i, 1) = sr
  19.                     arr(i, 2) = "'" & Left(k, Len(k) - 1)
  20.                 End If
  21.                 rs.MoveNext
  22.             Loop
  23.         End If
  24.         myFile = Dir
  25.     Loop
  26.     Range("A3").Resize(i, 2) = arr
  27.     Range("A2:B2") = Array("工作簿名字", "工作表名字")
  28.     Cells.EntireColumn.AutoFit
  29.     rs.Close
  30.     cnn.Close
  31.     Set rs = Nothing
  32.     Set cnn = Nothing
  33. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-11 14:40 , Processed in 0.343511 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表