我在这里寻求任何建议或意见,因为我想遍历文件夹中的每个excel文件。从我附图中可以看出,我的excel文件在文件类型(.xls<> .xlsx)和文件名(尤其是2018)上都不同。我还需要遍历"修订"或"修订"文件也是如此,因为下次可能会修改任何文件。
是的,我也对此做了一些研究。我的理解是我需要在构建VBA循环之前将所有文件名修改为模式。起初,我考虑过分解所有文件名并将其放回模式形式,但听起来太理想化了。另一种方法是使用每个文件中的日期来标记工作簿名称,但我再次发现这些日期具有不同的样式。某些文件使用字符串标记日期,例如" 2012年1月和#34;或" 2014年3月",而其他人使用日期表格,如" 19/08/2013"。
因此,如果有人可以建议我,我将不胜感激;
请注意我只是一个新手VBA编码器,所以如果你的答案带有解释或任何类型的例子,那将会很棒。
非常感谢。
-------------------------------------------- - - - - - - [编辑] - - - - - - - - - - - - - - - - - - --------------------------------
首先抱歉我之前的解释不好。我提供的信息太少,无法理解整体情况。让我们重新开始吧。
我的数据是关于从权威机构释放的钢铁消耗量 每个月。我的任务是收集所有这些数据(例如 每个数据的生产,进口,出口和消费 行)并生成时间序列模式(请参阅附件 excel screen)
因为这些数据可能会随时修改,因此我就是这样 决定每个月每次下载所有这些文件(一个 每个月的文件)。除了那些修改过的文件外 权限将意外地重命名这些文件,例如,来自 " Cons 201601.xlsx"进入"缺点201601 - modified.xlsx)"。这让我 更难以解决这个问题(请参阅附件 参考)。
此外,此权限似乎与文件命名有关 过去他们有不同的文件名模式 现在的。示例如下表所示;
Cons 201701-Revised.xlsx Cons 201710-Revised1.xlsx Cons 201711.xlsx Cons-200902.xls Cons-201212_revise.xls Cons-201401-revised.xls
我提到上面的文件名是为了创建一个循环的VBA
这些文件,选择一些内容并粘贴到另一个工作簿中
按时间顺序排列。这意味着我不能在执行时使用"循环
而功能"在我的VBA中。起初我决定使用两个整数
变量,两者都设置了数年和数月
(例如For i = 2009 to 2018
和For j = 1 to 12
)以创建文件名系统(例如filename = "Cons" & "-" & i & j
)。但,
正如我之前所说,当局没有图案的名称
阻止我创造这种循环。
我还尝试使用图1中单元格B2中的日期来标记 date是为了创建我之前已解释过的循环。 然而,再次,当局迄今未使用相同的模式 一个月和一年。在我检查了很多文件后,这些都是例子 单元格B2中的日期样式
January 2012 (string) February 2009 (string) Jan-16 (1/1/2016 date in custom format)
鉴于上述限制,你们能再次建议我任何可能吗? 创建按时间顺序循环的方法,以便将数据复制并粘贴到另一个 工作簿为每个产品形成一组时间序列数据?
感谢您的帮助:)
答案 0 :(得分:2)
首先,使用FileSystemObject
(在您的VBA项目中包含对Microsoft Scripting Runtime
的引用),其中包含一些有用的功能。您可以随时编写自己的代码,但为什么要在这种情况下重新发明轮子?
今天早上没有时间编写代码,所以这里是伪代码:
Open a Folder using your known filepath
Loop through all the files in the Folder (For each f in Folder.Files
extract the date code from your filename (e.g. using RegEx)
Add to a collection (e.g. array or Dictionary item) of the filename and the extracted date code (your key).
(end loop)
Sort your collection based on the extracted date code
现在为您提供了一个有序的文件列表,您可以依次打开这些文件并提取数据。另外一个好处是,集合中的密钥为您提供了一致的日期表示,您可以将其用作整理信息中的索引。
答案 1 :(得分:0)
如果你只想循环浏览文件夹中的所有文件,请使用:
dim file as variant
file = Dir("<PathToFolder>")
While (file <> "")
'Your logic here
file = Dir
wend