1

我创建了一个宏,但它从我创建它时所在的文件中插入了文件名。我想将它用于许多具有许多不同名称的文件(可能有数千个文件)。如何使宏独立于文件名?使用文件名“ADP”下方,现在此宏不适用于其他文件名,例如“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
4

1 回答 1

0

将您的宏包装在带有参数的 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
于 2013-10-11T18:19:52.030 回答