Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-选择要从中复制并粘贴到下一个空行的现有工作簿中的工作簿_Vba_Excel - Fatal编程技术网

Excel VBA-选择要从中复制并粘贴到下一个空行的现有工作簿中的工作簿

Excel VBA-选择要从中复制并粘贴到下一个空行的现有工作簿中的工作簿,vba,excel,Vba,Excel,我是VBA新手,一直在使用该网站拼凑解决方案 我需要编写一个宏,提示用户打开一个文件(wb2),从该工作簿(wb2)中的Sheet1复制一行数据,然后将其粘贴到Sheet1上原始工作簿(wb)中的下一个空行。直到我尝试在下一个空行中添加用于粘贴的代码时,我才开始工作-我现在收到以下错误消息,“运行时错误'438':对象不支持此属性或方法” 任何帮助都将不胜感激 Sub test() Dim wb As Workbook, wb2 As Workbook Dim ws As Worksheet D

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

我需要编写一个宏,提示用户打开一个文件(wb2),从该工作簿(wb2)中的Sheet1复制一行数据,然后将其粘贴到Sheet1上原始工作簿(wb)中的下一个空行。直到我尝试在下一个空行中添加用于粘贴的代码时,我才开始工作-我现在收到以下错误消息,“运行时错误'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
你试过这个吗

Selection.Copy
wb.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial xlPasteValues
你试过这个吗

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

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

非常感谢工程师们的帮助

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

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

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

非常感谢工程师们的帮助

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

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

只需简单介绍一下这个主题: 而不是

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

也 而不是

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


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

请简要说明一下这个问题: 而不是

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

也 而不是

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


通常情况下,
Select
会产生无法解释的错误。尤其是在使用多个工作簿时,请尽量远离
选择
。这段代码几乎直接来自我的工作代码。如果这不能解决问题,请告诉我们。

感谢您的快速响应。我刚刚尝试了您的更新,但仍然收到相同的错误,“运行时错误'438':对象不支持此属性或方法”。请每次尝试链1以查看错误发生的位置,因为wb不支持
。Cells
,因为这是一个工作表方法。好主意。我按照您的建议进行了检查,当它出现在“.Cells”部分时,确实会出现错误。因此,只需更改引用,它应该很好,例如
wb.Worksheets(“WORKSHEETNAME”)。Cells
再次感谢您的帮助。我进行了更新,还删除了
wb2。关闭
设置wb=activeworkbook
,我不再收到错误消息,但我认为它也不会将任何内容粘贴到我的初始工作表(wb)中。如果您对此有任何想法,我们将不胜感激。如果需要,我也可以重新发布代码。谢谢您的快速回复。我刚刚尝试了您的更新,但仍然收到相同的错误,“运行时错误'438':对象不支持此属性或方法”。请每次尝试链1以查看错误发生的位置,因为wb不支持
。Cells
,因为这是一个工作表方法。好主意。我按照您的建议进行了检查,当它出现在“.Cells”部分时,确实会出现错误。因此,只需更改引用,它应该很好,例如
wb.Worksheets(“WORKSHEETNAME”)。Cells
再次感谢您的帮助。我进行了更新,还删除了
wb2。关闭
设置wb=activeworkbook
,我不再收到错误消息,但我认为它也不会将任何内容粘贴到我的初始工作表(wb)中。如果您对此有任何想法,我们将不胜感激。如果需要,我也可以重新发布代码。