excel 从一个工作簿复制到另一个工作簿的问题

0s7z1bwu  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(152)

我有一个工作簿称为压片机生产报告的操作员填写。通常他们点击"轮班结束"按钮,它保存工作簿的班次和日期,然后重新打开空白的压片机生产报告。有时我需要从工作簿之间传输数据,所以我让它传输数据到重新打开的工作簿。以下是传输数据的代码。

Sub Transfer_1()

Range("G5").MergeArea.Copy
**Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("G5").PasteSpecial xlPasteValues**
Range("G7").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("G7").PasteSpecial xlPasteValues
Range("H5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("H5").PasteSpecial xlPasteValues
Range("I5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("I5").PasteSpecial xlPasteValues
Range("K5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("K5").PasteSpecial xlPasteValues
Range("L5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("L5").PasteSpecial xlPasteValues
Range("M5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("M5").PasteSpecial xlPasteValues
Range("N5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("N5").PasteSpecial xlPasteValues
Range("Q5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("Q5").PasteSpecial xlPasteValues
Range("AB5").MergeArea.Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("R5").PasteSpecial xlPasteValues
Range("S5").MergeArea.Copy
Range("R5").PasteSpecial xlPasteValues
Range("AC5").Copy
Workbooks("Sheeter Production Report").Worksheets("Production Report").Range("X2").PasteSpecial xlPasteValues

我不断收到运行时错误"9"下标超出范围。
它完全正确地重命名工作簿,打开Sheeter生产报告工作簿,没有任何问题,但当它复制和粘贴数据时,它会踢出上述错误。我用**标记了该行
我创建了一个名为Book1/Sheet1的空白工作簿,并将其与第一行中的Sheeter Production Report/Production Report交换,使用F5时,它将转移。但当它转到下一行时,它再次弹出错误。上周,它工作得非常好。我不知道可能发生了什么变化。
任何帮助都将不胜感激。

flseospp

flseospp1#

这对我很有效:

Option Explicit
Sub Transfer_1()
    
    Dim ws_Prod_Rpt As Worksheet
    Dim ws_Dest_Sht As Worksheet
    Dim RG As Range
    Dim AddressList
    Dim I As Long
    
    Set ws_Dest_Sht = Workbooks("Book1.xlsm").Worksheets("Dest_Worksheet")
    Set ws_Prod_Rpt = ThisWorkbook.Worksheets("Production Report")
    
    AddressList = Array("G5", "G7", "H5", "I5", "K5", _
                        "L5", "M5", "N5", "Q5", "AB5", _
                        "S5", "R5", "AC5")
    
    With ws_Prod_Rpt
        For I = 0 To UBound(AddressList)
            Debug.Print I & " - " & AddressList(I)
            Set RG = .Range(AddressList(I)).MergeArea
            Debug.Print RG.Address
            ws_Dest_Sht.Range(AddressList(I)) = RG.Value
        Next I
    End With
    
End Sub

我认为With可能是多余的,但是当我认为它更复杂时,我已经添加了它。
如果你遇到问题就告诉我。

相关问题