批量编辑相同格式的多个工作簿

时间:2015-06-19 02:45:02

标签: excel vba excel-vba

我对VBA很新(截至今天上午),请原谅我的无知。我有几百个Excel工作簿,所有格式都完全相同(只是使用不同的文本)。我试图在工作簿中格式化和删除一些表格(对于alL也是如此)。

我录制了一个在单独应用时工作正常的宏,但是当我尝试将其作为大规模格式的一种方式运行时,我收到运行时错误:

    Sub LoopFiles()
    Dim MyFileName, MyPath As String
    Dim MyBook As Workbook
    MyPath = "I:\Academic Networks\All scorecard copies, 6.18.2015"
    MyFileName = Dir(MyPath & "*.xlsm")
    Do Until MyFileName = ""
        Workbooks.Open MyPath & MyFileName
        Set MyBook = ActiveWorkbook
        Application.Run "Workbook1.xlsm!ScorecardMacro"
        MyBook.Save
        MyBook.Close
        MyFileName = Dir
    Loop
    End Sub

我不断收到运行时错误(9) - 下标超出范围。有什么想法吗?

这里是格式化/删除我试图应用于我的所有工作簿(一次应用于一个工作簿时工作正常:

Sub ScorecardMacro()
'
' Scorecard Macro
'

'
    Sheets.Add
    Sheets("Scorecard").Select
Range("D3:D36").Select
Selection.Copy
Sheets("Sheet1").Select
Range("B1").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
    , Transpose:=True
Sheets("Scorecard").Select
Range("A3:A36").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
    , Transpose:=True
Sheets("Scorecard").Select
Range("F3:I36").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Sheets("Checklist").Select
Range("D4:D27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
ActiveWindow.ScrollColumn = 28
Range("AJ1").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
    , Transpose:=True
Sheets("Checklist").Select
Range("A4:A27").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("AJ2").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
    , Transpose:=True
Sheets("Additional Information").Select
Range("A4:B14").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("BH1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Sheets("Program Recommendations").Select
Range("A4:D21").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("BS1").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
    , Transpose:=True
ActiveWindow.ScrollColumn = 1
Range("A2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
ActiveCell.FormulaR1C1 = _
    "=MID(CELL(""filename""),SEARCH(""["",CELL(""filename""))+1,SEARCH(""]"",CELL(""filename""))-SEARCH(""["",CELL(""filename""))-1)"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A6"), Type:=xlFillDefault
Range("A2:A6").Select
    Sheets("Program Recommendations").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Additional Information").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Scorecard").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Checklist").Select
ActiveWindow.SelectedSheets.Delete

End Sub

2 个答案:

答案 0 :(得分:0)

错误显示您正在尝试访问不存在的内容。

由于您要删除某些内容,最好先执行所有更新,然后再执行所有删除操作。

如果你之间进行了一些删除然后更新,可能会丢失一些值/表

答案 1 :(得分:0)

您指的是名为" filename"的命名范围:         " = MID(CELL(""文件名"&#34),SEARCH("" ["",CELL(& #34;"文件名""))+ 1,SEARCH(""]"",CELL(""文件名"")) - SEARCH("" ["",CELL(""文件名"&#34) )-1)"

我怀疑其他工作簿中没有定义名称。