2014-03-05 61 views
0

下面的宏循環執行計算,並生成一個條形圖。目前它適用於第一張工作表(Sheet1),我希望能夠在我的Excel工作簿中的所有工作表上重複相同的宏。有沒有簡單的方法來做到這一點?提前致謝。宏,通過工作表

Sub MyReport() 
    Workbooks.Open Filename:= _ 
     Application.GetOpenFilename 
    Range("G2").Select 
    ActiveCell.FormulaR1C1 = "=SUM(C[-5])" 
    Range("H2").Select 
    ActiveCell.FormulaR1C1 = "=SUM(C[-5])" 
    Range("I2").Select 
    ActiveCell.FormulaR1C1 = "=SUM(C[-5])" 
    Range("J2").Select 
    ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" 
    Range("G1:I2").Select 
    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.SetSourceData Source:=Range("'Sheet1'!$G$1:$I$2") 
    ActiveChart.ChartType = xlColumnStacked 
End Sub 
+2

'有一個簡單的方法來做到這一點' - 你可以使用[For Each循環(HTTP:// stackoverflow.com/questions/12060855/iterating-through-excel-sheets) –

回答

3

以下是如何使用每個循環將代碼應用於每張工作表。我也簡化了一些你的代碼。

Sub MyReport() 
    Dim Wkb As Workbook 
    Dim Ws As Worksheet 
    Dim chrt As Chart 

    Set Wbk = Workbooks.Open(Filename:=Application.GetOpenFilename) 

    For Each Ws In Wbk.Worksheets 
     Ws.Range("G2:I2").FormulaR1C1 = "=SUM(C[-5])" 
     Ws.Range("J2").FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" 

     Set chrt = Ws.Shapes.AddChart.Chart 
     chrt.SetSourceData Source:=Ws.Range("$G$1:$I$2") 
     chrt.ChartType = xlColumnStacked 
    Next Ws 
End Sub 

結果(表所示1):

enter image description here

+0

尼斯的答案,但我想'Dim'的'Ws'變量只是最佳實踐。 –

+1

@simpLEMAn好的建議,完成。 –

+0

等一下! :)而不是'ActiveWorkbook'也許這將是很好的'朦朧WB作爲WorkBook'然後'設置WB = Workbooks.Open(文件名:= Application.GetOpenFilename)'包括OP的初始代碼。 **編輯:**你剛剛得到我的+1 :) –