Excel VBA代码循环遍历文件夹,合并文件,创建图形然后保存在其他位置

时间:2018-06-29 09:32:40

标签: excel vba excel-vba

我正在尝试编写一些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文件可能相同。 再次感谢您的帮助或指导

1 个答案:

答案 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

我希望这是您朝着正确方向努力的目标 最好的祝福。 安东尼奥