Excel VBA – select工作簿复制并粘贴到下一个空行的现有工作簿中

我是VBA新手,一直在使用该网站拼凑解决scheme。

我需要编写一个macros来提示用户打开一个文件(wb2),从工作簿(wb2)中的Sheet1复制一行数据,然后将其粘贴到原始工作簿(wb)中的下一个空行工作表Sheet1。 我得到它的工作,直到我试图添加代码粘贴在下一个空行 – 我现在收到以下错误信息,“运行时错误'438':对象不支持此属性或方法”

任何帮助将不胜感激。

Sub test() Dim wb As Workbook, wb2 As Workbook Dim ws As Worksheet Dim vFile As Variant 'Set source workbook Set wb = ActiveWorkbook 'Open the target workbook vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _ 1, "Select One File To Open", , False) 'if the user didn't select a file, exit sub If TypeName(vFile) = "Boolean" Then Exit Sub Workbooks.Open vFile 'Set selectedworkbook Set wb2 = ActiveWorkbook wb2.Range("A3:E3").Select Selection.Copy wb.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues Application.CutCopyMode = False Application.ScreenUpdating = True wb2.Close 'Set targetworkbook Set wb = ActiveWorkbook End Sub 

只是关于这个问题的简要说明:而不是

 wb2.Worksheets("Output").Range("J3:R3").Select Selection.Copy 

尝试

 wb2.Worksheets("Output").Range("J3:R3").Copy 

而不是

 wb.Worksheets("Master").Range("C" & LastCellRowNumber).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

尝试

 wb.Worksheets("Master").Range("C" & LastCellRowNumber).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

通常, Select会产生无法解释的错误。 特别是在使用多个工作簿时,请尽量远离“ Select 。 这段代码几乎直接来自于我的工作代码。 让我们知道如果这不解决问题。

我重新编写了代码,并使其工作。 这可能不是最干净的方法,但是考虑到我的时间表和缺乏VBA的知识,它将不得不这样做。

非常感谢工程师的帮助。

说明:此代码应放入要从其他工作簿中粘贴内容的工作表中。 当它运行时,它会提示你打开一个工作簿从(“输出”工作表)复制,然后它会select你在代码(JR:R3)中指定的单元格,将它们粘贴到你的初始的下一个空行工作簿(在“主”工作表中find列C中的最后一行),然后closures并保存刚才复制的工作簿。

 Sub CommandButton1_Click() 'Last cell in column Dim WS As Worksheet Dim LastCell As Range Dim LastCellRowNumber As Long Set WS = Worksheets("Master") With WS Set LastCell = .Cells(.Rows.Count, "C").End(xlUp) LastCellRowNumber = LastCell.Row + 1 End With Dim wb As Workbook, wb2 As Workbook Dim vFile As Variant 'Set source workbook Set wb = ActiveWorkbook 'Open the target workbook vFile = Application.GetOpenFilename("Excel-files,*.xlsx", _ 1, "Select One File To Open", , False) 'if the user didn't select a file, exit sub If TypeName(vFile) = "Boolean" Then Exit Sub Workbooks.Open vFile 'Set selectedworkbook Set wb2 = ActiveWorkbook 'Select cells to copy wb2.Worksheets("Output").Range("J3:R3").Select Selection.Copy 'Go back to original workbook you want to paste into wb.Activate 'Paste starting at the last empty row wb.Worksheets("Master").Range("C" & LastCellRowNumber).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Application.ScreenUpdating = True 'Close and save the workbook you copied from wb2.Save wb2.Close End Sub 

你有没有尝试过

 Selection.Copy wb.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select Selection.PasteSpecial xlPasteValues