【问题标题】:Paste selection of variable range from one workbook to another workbook beginning in a specific cell从特定单元格开始将变量范围从一个工作簿粘贴到另一个工作簿
【发布时间】:2016-01-18 15:28:50
【问题描述】:

我正在尝试将关闭的工作表中“A”列到“K”列中的单元格中的数据复制到打开的工作表中,从单元格“A4”开始,同时保持源格式。工作簿 A 是我要从中复制的那个,而工作簿是我要粘贴到的那个。

Sub cmdUpdate_Click()
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Workbooks.Open Filename:="path to Workbook A", ReadOnly:=True
Windows("Workbook A").Activate
Range("A3" & ":K" & LastRow).Select
Selection.Copy
Workbooks("Workbook B").Cells(Rows.Count, 4).PasteSpecial Paste:=PasteAllUsingSourceTheme

我收到的错误是“范围类的选择方法失败”。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    你可以试试这个。这不使用select 语句,但仍复制与其明确声明的范围相同的范围,而不是使用select 语句(应尽可能避免)

    Sub cmdUpdate_Click()
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Workbooks.Open Filename:="path to Workbook A", ReadOnly:=True
    Workbooks("Workbook A").Range("A3" & ":K" & LastRow).Copy
    Workbooks("Workbook B").Cells(Rows.Count, 4).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
    

    在进一步的 cmets 后更新:

    你可以试试这个:

    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim LastRow As Long
    Dim rng As Range
    
    Set wb1 = Workbooks.Open("path to Workbook A", ReadOnly:=True)
    Set wb2 = Workbooks("Workbook B")
    
    Set ws1 = wb1.Sheets("Relevant Worksheet in A")
    Set ws2 = wb2.Sheets("Relevant Worksheet in B")
    
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Set rng = ws1.Range("A3" & ":K" & LastRow)
    
    rng.Copy
    
    With ws2
        .Cells(Cells(.Rows.Count, "D").End(xlUp).Row, 4).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
    End With
    

    【讨论】:

    • 解决了“范围类的选择方法失败”错误,但又出现了另一个问题;即使我使用了 Windows("Workbook A").Activate,被复制的单元格在 Workbook B 而不是 Workbook A 中
    • @rstuart931 我已经更新并将.Activate 行与.Copy 组合在一起,这将再次明确地向工作簿声明范围。您可能希望对LastRow 语句执行类似的操作,因为您当前正在计算我假设为“工作簿 B”的行数,然后使用该值来声明“工作簿 A”中的范围
    • 您对 LastRow 的看法是正确的,我移动了它并观察了一下,发现它现在正在读取正确的工作簿。正如您所建议的,我明确声明了范围;我收到以下错误“对象不支持此属性或方法”。感谢您花时间处理此问题。
    • 抱歉,cmets 出现问题。我收到以下错误“对象不支持此属性或方法”与 Workbooks("Workbook A").Range("A3" & ":K" & LastRow).Copy 行相关联
    • LastRow 的评估结果是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2017-09-08
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多