VBA代码在具有条件的所有工作簿上运行

时间:2015-03-02 09:39:27

标签: excel vba excel-vba

除了手动簿记外,我将所有与分期付款相关的数据保存在Excel文件中。我使用的模板就像发票一样,但也显示截止日期,付款日期,分期付款金额等等。剩余的客户余额。

我目前管理着4家分行的销售数据。我拥有的文件夹是 Branch-1,Branch-2,Branch-3&分支4

这些文件夹中的每一个都包含根据2006年至2015年的销售年份命名的子文件夹。每个都有12个工作簿(2006年1月1日,2006年2月,等于2015年3月,直到2015年3月。在名为2015的文件夹中)。这些工作簿中的每一个都根据分配给客户的帐号命名了不同数量的工作表。

我正在寻找一个解决方案,在一个文件夹中的所有工作簿中运行具有特定条件的代码。我使用简单的代码遍历工作簿中的所有工作表,从所有工作表中的某些单元格中提取数据。通过明确地粘贴数据,在名为“摘要”的工作表中创建摘要。

Sub Create_Summary()

Dim wksht As Worksheet: Set wksht = Sheets("Summary")
Dim ws As Worksheet
Dim LR As Long

Application.ScreenUpdating = False

For Each ws In Worksheets

    If ws.Name <> wksht.Name Then

        LR = wksht.Range("A" & Rows.Count).End(xlUp).Row + 1

        wksht.Range("A" & LR) = ws.Range("H2")
        wksht.Range("B" & LR) = ws.Range("B2")
        wksht.Range("C" & LR) = ws.Range("B4")
        wksht.Range("D" & LR) = ws.Range("C2")
        wksht.Range("E" & LR) = ws.Range("B3")
        wksht.Range("F" & LR) = ws.Range("E3")
        wksht.Range("G" & LR) = ws.Range("H3")
        wksht.Range("H" & LR) = ws.Range("H1")
        wksht.Range("I" & LR) = ws.Range("F48")
        wksht.Range("J" & LR) = ws.Range("H13")
        wksht.Range("K" & LR) = ws.Range("H12")
        wksht.Range("L" & LR) = ws.Range("H14")
        wksht.Range("M" & LR) = ws.Range("H15")

    End If

Next ws

Application.ScreenUpdating = True

End Sub

我在所有工作簿中运行此代码,这非常耗时。我必须通过添加标题,列中的标题,设置所需的列宽等来自定格式化摘要表。然后我必须复制所有表格和放大器。粘贴到另一个工作簿中以完成任何分支的主要摘要,以便我在2006年到2015年的任何一个分支机构都有完整的客户信息。除了主要摘要表之外,我还要准备另外两张纸,其中一张显示剩余余额的客户。另一个显示剩余余额的条件,即H13的数据大于0(H13> 0),省略任何H13 = 0的账户。

我正在寻找一个宏或者3个宏(考虑到我上面提到的2个条件),它贯穿我的所有工作簿(不包括名为Summary的工作簿中的每个工作簿),从单元格中收集数据,粘贴到一个主表单行与列标题一致,根据单元格中文本占用的空间设置列宽,主标题为分支文件夹名称&amp;显示日期 - 创建摘要的时间。我对Excel和Excel的专业知识非常有限。因此,我们将高度赞赏任何形式的帮助。

我附上文件是为了更好地理解我的要求。

文件:2014年2月.xls HTML代码: https://drive.google.com/file/d/0B0L43wu5SnIoWklmNTVNSnNHbWM/view?usp=sharing

档案:2014年3月.xls HTML代码: https://drive.google.com/file/d/0B0L43wu5SnIoQjRTdnRCRGxLRWM/view?usp=sharing

这两个文件是名为2014的Branch 1文件夹中的示例文件。

1 个答案:

答案 0 :(得分:0)

如果检查引用“Microsoft Scripting Runtime”,则可以使用FileSystemObject导航文件夹和文件(以查找工作簿)

dim fso as FileSystemObject
dim folder as Scripting.folder
dim file as Scripting.file

set fso = new FileSystemObject
set folder = fso.getFolder("Branch-1")
for each file in folder.Files
    ' open workbooks, assign worksheet-variables and run your code
next file

您可以通过以下方式打开工作簿:

dim wb = as Workbook
set wb = Workbooks.Open("path")

然后继续执行您正在执行的工作表和范围。