2015-03-02 82 views
0

除手動記帳外,我還將所有與分期付款相關的數據保存在Excel文件中。我使用的模板就像發票一樣,但也顯示到期日,付款日期,分期付款金額&剩餘的客戶餘額。VBA代碼在條件下在所有工作簿上運行

我目前正在管理4個分行的銷售數據。我有的文件夾是Branch-1,Branch-2,Branch-3 & Branch-4

每個文件夾都包含按銷售像2006年至2015年&有12個工作簿中的每一年命名的子文件夾(一月2006.xls,二月2006.xls &以此類推,直到在2015年命名的文件夾三月2015.xls) 。每個工作簿都有不同數量的工作表,根據分配給客戶的帳號命名。

我正在尋找一種解決方案,以便在某個文件夾中的所有工作簿中以特定條件運行代碼。我使用通過工作簿中所有工作表的簡單代碼,從所有工作表中的某些單元格中提取數據。&通過將數據行粘貼到明智行列中,在名爲「摘要」的工作表中創建摘要。

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個條件),從單元收集數據,粘貼按列標題排成一行,根據單元格中文本佔用的空間設置列寬,主標題爲分支文件夾名稱&顯示創建摘要的日期 - 時間。我在Excel &上擁有非常有限的專業知識,因此我將不勝感激。

我附加文件以更好地理解我的要求。

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

文件:三月2014.xls HTML代碼: https://drive.google.com/file/d/0B0L43wu5SnIoQjRTdnRCRGxLRWM/view?usp=sharing

這兩個文件是從名爲2014處1個文件夾示例文件。

回答

0

如果選中參考「Microsoft腳本運行」,你可以使用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") 

然後繼續進行地址工作表和範圍,因爲您已經在做。

相關問題