【发布时间】:2016-08-24 20:49:02
【问题描述】:
我正在与必须在 excel 文件中识别某些变量的人合作。目前,与我一起工作的人有很多文件夹和子文件夹,其中包含 Excel 文档。他正在使用 VBA 代码在文件夹中查找子文件夹,然后返回路径,然后创建指向子文件夹的超链接(这不是下面 VBA 代码的一部分)并查看其中的所有 excel 文件, 与主文件夹中的子文件夹的级别无关。
代码如下:
Sub GetFolders()
Dim path As String
Dim folder As String
Dim row As Integer
path = "your directory here"
folder = Dir(path, vbDirectory)
row = 1
Do While folder <> ""
If (GetAttr(path & folder) And vbDirectory) = vbDirectory Then
Cells(row, 1) = path & folder
row = row + 1
End If
folder = Dir()
Loop
End Sub
这很好,但我知道必须有更好的方法。如何操作此代码以返回找到的任何 excel 文件的 COLUMN HEADERS A)在文件夹中或 B)在文件夹中包含的子文件夹中。我希望将这些返回到 excel 电子表格中,这样就不需要打开 100 个 excel 文档,而只需要打开这个,然后我们可以识别任何需要进一步调查的 excel 电子表格并忽略其余的。
【问题讨论】:
-
展开循环并打开找到的每个工作簿相对简单。您必须做出的决定是 a) 该工作簿中的列标题在哪里 - 只有一张、多张、所有工作表? b) 每张纸上的标题位于哪一行 - 第 1 行或其他行?这当然是可能的......搜索这些想法并整理一些代码,然后回来问一些关于你所做的事情的问题。
-
听起来你最好把它变成一个 Access DB。这不是 Excel 真正构建的类型。也就是说,找出为什么您必须通过所有这些来检索这些特定标头可能会帮助我们找到更好的解决方案。例如:如果文件与文件的列不同,是否有可以从文件夹位置找到的模式?列是否可以标准化并在某些文件中留空?
-
Excel 2010及以上版本可以使用
Power Query查询文件夹中excel文件的列标题,无需打开 -
@slai - 您可以通过 ADO 在任何版本的 Excel 中执行相同的操作:
Recordset.Fields(foo).Name -
@Comintern 今天我确实学到了一些新东西并且非常有用。感谢您发布带有代码的完整答案。我一定会为这个添加书签! (+1) 我这边!很棒的东西。