我正在尝试编写一些VBA代码,但是我对此很陌生。
每个月我需要使用csv文件为不同的网站制作40多个报告。到目前为止,我已经有代码来组合csv文件并制作一个图形,但是我需要从具有足够相同名称的文件中再制作两个图形,只有相似性才是“ SimHistory”的开头。
我的想法是让所有csv文件在每个站点上合并,然后将数据放入表中,然后从中创建图形,然后将它们保存在这些报告的指定文件夹中。
每个站点都有其自己的文件夹,其中包含4个以上的csv文件,大约有40多个站点
我能够得到其中一张图并合并文件,但是我无法解决如何遍历所有文件夹并实现所需的一切。任何帮助或骨架代码将不胜感激
到目前为止,这是我一直在使用的:
结合:
显式选项
Sub CombineFiles()
Dim Path As String
Dim FileName As String
Dim Wkb As Workbook
Dim WS As Worksheet
Application.EnableEvents = False
Application.ScreenUpdating = False
Path = "C:\Users\Support\Desktop\automation test stuff\Luncarty\" 'Change as needed
FileName = Dir(Path & "\*.csv", vbNormal)
Do Until FileName = ""
Set Wkb = Workbooks.Open(FileName:=Path & "\" & FileName)
For Each WS In Wkb.Worksheets
WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Next WS
Wkb.Close False
FileName = Dir()
Loop
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Client count chart sheet:
Sub ClientcountChart()
Dim Client_count As Chart
Set Client_count = Charts.Add
With Client_count
.SetSourceData Source:=Sheets("client_count (2018-06-01)").Range("B1:C28")
.ChartType = xlColumnClustered
.ChartTitle.Text = "Daily Client Count"
End With
End Sub
除sim历史记录表之外,大多数csv文件具有相同的名称,在SIM历史记录表中,一个或多个四个csv文件可能相同。 再次感谢您的帮助或指导
答案 0 :(得分:1)
@罗斯:
您需要使用基于FileSystemObject的技巧,这是Excel访问系统文件夹和文件的强大方法。
您只需将一些变量声明为对象:
Dim oFSO, oFolder, Ofile as Object
...
Set oFSO = CreateObject("scripting.filesystemobject")
Set oFolder = oFSO.getfolder(sOrigen)
如果要处理文件夹子文件夹,只需执行以下操作:
For each oSubFolder in oFolder.subfolders
...
Next oSubFolder
如果要处理文件夹中保留的文件,只需执行以下操作:
For each oFile in oFolder.files
...
Next oFile
我希望这是您朝着正确方向努力的目标 最好的祝福。 安东尼奥