2015-06-19 21 views
0

我對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 

末次

+0

您確實需要發佈'ScorecardMacro'的代碼,以便在編寫要在多個工作簿上運行的泛型代碼 – joehanna

+0

Gotcha時,我們可以看到安全防護缺失的內容。這個宏是由Excel自動生成的,所以我不認爲有什麼需要改變。謝謝你讓我知道。添加到我原來的帖子。 –

回答

0

錯誤說明你是試圖訪問的東西不存在。

既然你刪除的東西,它能夠更好地做所有你先更新,然後做所有的刪除結束。

如果你做一些刪除之間,然後更新,可能有一些值/工作表丟失

+0

我以爲同樣的事情,但是當我單獨應用我的宏(只是編輯我的文章來包含代碼),它工作正常。這是當我試圖循環它在多個文件上失敗。 –

0

你指的是一個命名的範圍,稱爲「文件名」: 「= MID(CELL(」「文件名」「), SEARCH( 「」[ 「」,CELL( 「」 文件名 「」))+ 1,SEARCH( 「」] 「」,CELL( 「」 文件名 「」)) - SEARCH( 「」[ 「」,CELL( 「」文件名「」)) - 1)「

我懷疑該名稱未在其他工作簿中定義。

相關問題