我每天都会收到一份 .csv 格式的报告,并且每天都会将数据复制到电子表格的“输入”选项卡中。此输入选项卡上的数据每天都在随着信息的增加而不断增长,我将通过以下方式导入这些数据:
- 单击“输入”选项卡上的最后一行
- 获取外部文本数据
- 导入 CSV 文件,使用 ; 作为分隔符,然后输入第 2 行以后的数据
- 将文本格式化为 Calibri 8pt 字体
所有传入的 CSV 文件都有一个日期递增的命名约定列表,因此:
20130826_Summary_Report.csv
20130827_Summary_Report.csv
20130828_Summary_Report.csv
我们每天大概要查看大约 5000 行数据,虽然这不是最耗时的任务,但我们正在寻找简化流程的方法。
有什么方法可以创建一个宏,它可以从文件夹中抓取最新的 .csv 文件并使用上述过程自动导入数据?
答案1
您可以使用 Workbooks.OpenText 方法在新工作表中输入,然后执行 Worksheets.Move 方法将其带入当前工作簿(即使在“INPUT”选项卡之后)。
既然您提到您每天都会这样做,那么自动提取今天的 .csv 文件的方法是:
Dim inputfilepath As String
inputfile = ActiveWorkbook.Path & "\" & Format(Date, "yyyymmdd") & ".csv"
'open file
Workbooks.OpenText Filename:=inputfile
您可以为 .OpenText 指定参数来设置 .csv 分隔符和适合您的 .csv 文件的其他选项。
然后,您可以通过使用 Range.end 方法自动查找最后一行来开始复制到“INPUT”选项卡中的最后一行:
Worksheets("INPUT").Range("A1").End(xlDown).Offset(1).Select
这假设 A 列中的信息没有空白,并转到最后一个包含信息的单元格之后的单元格 - 与选择 A1,然后按 Ctrl 向下键相同。