vba - 将范围复制到新工作簿 - 不复制,错误 9

标签 vba excel

我收到运行时错误“9”:

下标超出范围。

错误发生在最后。我试图打开一个新的电子表格,将编辑的信息复制到其中,然后我将使用此后的脚本根据选择转储 8-12 个以上文件 INTO 'FName' 。 ..这可能有效,也可能无效。

当我单击“调试”时,此内容会突出显示:

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

我不明白这里的错误?这是我要复制的范围选择吗?

旁注:我正在努力学习如何删除 select 等的实例。仅供引用

代码如下:

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

最佳答案

改为使用对象:

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")

关于vba - 将范围复制到新工作簿 - 不复制,错误 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43813531/

相关文章:

vba - 是否可以使用自动过滤或在字典上查找?

excel - 用于删除已位于另一张工作表中的重复行的 VBA 代码

excel - 我只想通过文本使用正则表达式获取数值

ms-access - 确定路径是否为网络路径 VBA

excel - 将 Autocad/Maps 中的 block 导入 Excel

excel - 使用 Or 逻辑运算符在表达式中同时评估两个条件

excel - 修改Excel VBA代码以粘贴到特定的ppt幻灯片中

linux - 将 Office 文件转换为 swf (Flash)

python - openpyxl 合并单元格 : Formatting issue

excel - 获取范围内包含 "keyword"的所有值的列表(不包含空格)