Excel Maco:如何使用variables文件名

我创build了一个macros,但是它在创build时从我所在的文件中插入了文件名。 我想将它用于许多不同名称的文件(可能有数千个文件)。 如何使macros独立于文件名? 在文件名“ADP”下面,现在这个macros不能和其他文件名一起工作,例如“CPL”或“DKH”

Columns("A:A").Select Selection.Delete Shift:=xlToLeft Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select ActiveWorkbook.Worksheets("ADP").Sort.SortFields.Clear ActiveWorkbook.Worksheets("ADP").Sort.SortFields.Add Key:=Range("A1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("ADP").Sort .SetRange Range("A1:G7694") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWorkbook.SaveAs Filename:="C:\Data\ADP.csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close 

用一个参数将你的macros包装在一个Sub过程中,然后再调用它,就像这样

 Sub MyMacro(file as string, worksheetname as string) Columns("A:A").Select Selection.Delete Shift:=xlToLeft Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select ActiveWorkbook.Worksheets(worksheetname).Sort.SortFields.Clear ActiveWorkbook.Worksheets(worksheetname).Sort.SortFields.Add Key:=Range("A1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(worksheetname).Sort .SetRange Range("A1:G7694") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWorkbook.SaveAs Filename:=file, _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close End Sub Sub Usage() MyMacro "C:\Data\ADP.csv", "ADP" MyMacro "C:\Data\CPL.csv", "CPL" End Sub