2014-10-04 97 views
-1

長話短說。我沒有SAS圖表,需要在國家級別的excel中生成圖表。所以52個圖表(包括哥倫比亞特區和波多黎各)。Excel VBA循環遍歷表格來定義宏變量

所有需要的圖表中的數據都是在一個名爲像這樣的.csv文件lr_hpi_ & state..csv

,我需要做的就是反覆打開每個.csv文件,將數據複製並粘貼到圖表模板。

我在圖表模板工作簿中創建了一個名爲states的工作表,如下所示。

id state 
    1 AK 
    2 AL 
    3 AR 
    4 AZ 
    5 CA 

我該如何去循環狀態表來一次獲取狀態字符串來定義一個宏變量?我想我可以使用循環計數器來定義一個名爲i的變量,然後將i連接到狀態表的「B」列&「&」。

只是無法弄清楚語法。

謝謝。

VBA代碼我有一個稍微修改的記錄宏。 VBA不是我的母語。

子stateloop()

Dim i As Integer 

Dim state As String 
state = "AK" 

Application.DisplayAlerts = False 
Workbooks.Open Filename:= _ 
    "\\sac-psas-02\pm\ma\scott\OW\hpi trend pci outlier removal\lr_hpi_" & state & ".csv" 
Range("B2").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 
Windows("lr_hpi_template.xlsm").Activate 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 

Windows("lr_hpi_" & state & ".csv").Activate 
ActiveWorkbook.Saved = True 
ActiveWindow.Close 

ChDir "\\sac-psas-02\pm\ma\scott\OW\hpi trend pci outlier removal" 
ActiveWorkbook.SaveAs Filename:= _ 
    "\\sac-psas-02\pm\ma\scott\OW\hpi trend pci outlier removal\lr_hpi_" & state & ".xlsm", _ 
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 
ActiveWindow.Close 


Application.Quit 
ActiveWorkbooks.Close False 

末次

回答

0

你可以試試下面的代碼:

Sub stateloop() 

Dim i As Long 
Dim state As String 
Dim sh As Worksheet 

Set sh = ThisWorkbook.Worksheets("state") 

For i = 2 To 53 ' assuming the first state is on row 2 and so on 

    state = sh.Range("B" & i) ' assuming the states are in column B 

    ' Rest of code goes here 

Next i 

End Sub 
+0

完美的作品。謝謝您的幫助。 – user3529091 2014-10-04 22:35:39