2017-05-05 2 views
2

Ich erhalte einen Laufzeitfehler '9':Bereich auf neue Arbeitsmappe kopieren - Nicht kopieren, Fehler 9

Index außerhalb des Bereichs.

Der Fehler tritt am Ende auf .. Ich versuche, eine neue Tabelle zu öffnen, bearbeitete Informationen darin zu kopieren, und dann werde ich ein Skript verwenden, um 8-12 weitere Dateien basierend auf Auswahl INFO 'FName' zu dumpen ... die funktionieren können oder auch nicht.

Dies wird hervorgehoben, wenn ich Debug klicken:

Workbooks("TFR7").Sheets("Sheet1").Range("A2:V" & LastRow).Copy Destination:=Workbooks(FName).Sheets("Sheet1").Range("A1") 

ich den Fehler nicht hier verstehen? Ist es meine Bereichsauswahl, um zu kopieren?

Randbemerkung: Ich arbeite zu lernen, wie die Instanzen wählen usw. entfernen FYI

-Code ist unten:

Sub OpenReportThenEdit() 

'This will open a designated report and edit it 
'File pathway and name must be correct 
'Any adjustments to file layout could 'break' macro 
'First file will always be TFR7 and from there can go into more 


'Currently only works for TFR7 

Application.ScreenUpdating = False 

Dim wb As Excel.Workbook 
Dim LastRow As Long 
Dim FName As String 

'Open a report, delete header/footer rows 

Set wb = Workbooks.Open("C:\Users\USER\Downloads\TFR7", False, False) 
wb.Sheets(1).Rows("1:5").EntireRow.Delete 
wb.Sheets(1).Range("A" & Rows.Count).End(xlUp).EntireRow.Delete 
wb.Sheets(1).Range("A" & Rows.Count).End(xlUp).EntireRow.Delete 
wb.Sheets(1).Range("J" & Rows.Count).End(xlUp).EntireRow.Delete 

'Edit Sheet Font/Size 

With Worksheets("Sheet1").Cells.Font 
    .Name = "Arial" 
    .Size = 9 
End With 

'Edit Sheet Alignment, etc. 

With Worksheets("Sheet1").Cells 
    .WrapText = False 
    .Orientation = 0 
    .AddIndent = False 
    .IndentLevel = 0 
    .ShrinkToFit = False 
    .ReadingOrder = xlContext 
    .MergeCells = False 
    .HorizontalAlignment = xlRight 
    .VerticalAlignment = xlBottom 
    .WrapText = False 
End With 

'Replace 'text to columns' and convert dates to Excel Date Value before 
'Paste Values' to remove formula 

Columns("L:O").Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Range("L2").FormulaR1C1 = "=DATEVALUE(LEFT(RC[4],10))" 
Range("L2").Copy Destination:=Range("L2:O2") 
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row 
Range("L2:O" & LastRow).FillDown 
Range("P1:S1").Copy Destination:=Range("L1:O1") 

Columns("L:O").Select 
Application.CutCopyMode = False 
Selection.Copy 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 
Selection.NumberFormat = "m/d/yyyy" 

'Delete old date columns, remove duplicate values (by tracking numbers) 

Columns("P:S").Select 
Selection.Delete Shift:=xlToLeft 
ActiveSheet.Range("A1:V" & LastRow).RemoveDuplicates Columns:=19, Header:= _ 
    xlYes 

'Select cells with values, turn them blue (because silly people want them blue) 

LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row 
ActiveSheet.Range("A2:V" & LastRow).Select 

With Selection.Interior 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
    .ThemeColor = xlThemeColorAccent1 
    .TintAndShade = 0.399975585192419 
    .PatternTintAndShade = 0 
End With 

'Open Workbook, set Workbook as Destination for 

FName = "C:\Users\USER\Downloads\Daily_" & _ 
     Format(Date, "mmdd") & ".xlsm" 

Workbooks.Add.SaveAs Filename:=FName, _ 
        FileFormat:=xlOpenXMLWorkbookMacroEnabled 

Workbooks("TFR7").Sheets("Sheet1").Range("A2:V" & LastRow).Copy Destination:= _ 
     Workbooks(FName).Sheets("Sheet1").Range("A1") 

Application.ScreenUpdating = True 

End Sub 
+0

Warten , muss ich 'FName' als irgendeine Form von Variable festlegen? 7 Tage danach, wenn ich mich selbst lehre, wenn mir jemand in die richtige Richtung zeigen kann, bin ich außerordentlich dankbar. – dduz

+1

Der ** Grund ** für den Fehler ist, dass 'Arbeitsmappen (" C: \ Users \ USER \ Downloads \ Daily_0506.xlsm ")' nicht funktionieren, es muss nur 'Arbeitsmappen sein (" Daily_0506.xlsm ") '(dh ohne den Pfad). Die Antwort von Macro Man sollte das Problem lösen. – YowE3K

Antwort

4

Arbeit mit Objekten statt:

Dim otherWB As Excel.Workbook 

'// other code here 

Set otherWB = Workbooks.Add 
otherWB.SaveAs Filename:=FName, FileFormat:=xlOpenXMLWorkbookMacroEnabled 

'// wb is already set to original workbook, otherWB is set to new workook 
wb.Sheets("Sheet1").Range("A2:V" & LastRow).Copy Destination:=otherWB.Sheets("Sheet1").Range("A1") 
Verwandte Themen