Excel VBA运行时错误'424':Object尝试复制TextBox时需要

Sam*_* WB 5 excel vba runtime

我正在尝试将文本框的内容从一个复制workbook到另一个.我从第一个workbook到第二个复制单元格值没有问题,但是object required当我尝试复制文本框时出现错误.这macro是从包含我想要复制的数据的工作簿运行的.使用Excel 2007代码:

Sub UploadData()
    Dim xlo As New Excel.Application
    Dim xlw As New Excel.Workbook
    Set xlw = xlo.Workbooks.Open("c:\myworkbook.xlsx")
    xlo.Worksheets(1).Cells(2, 1) = Range("d4").Value 'Copy cell content (this works fine)
    xlo.Worksheets(1).Cells(2, 2) = TextBox1.Text 'This gives me the object required error
    xlw.Save
    xlw.Close
    Set xlo = Nothing
    Set xlw = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

dnL*_*nLL 5

您的宏的问题在于,一旦您打开了目标Workbookxlw在您的代码示例中),它就会被设置为ActiveWorkbook对象,并且您会收到错误消息,因为TextBox1不存在于该特定Workbook 中。要解决此问题,您可以在打开另一个之前定义一个指向实际工作簿的引用对象。

Sub UploadData()
    Dim xlo As New Excel.Application
    Dim xlw As New Excel.Workbook
    Dim myWb as Excel.Workbook

    Set myWb = ActiveWorkbook
    Set xlw = xlo.Workbooks.Open("c:\myworkbook.xlsx")
    xlo.Worksheets(1).Cells(2, 1) = myWb.ActiveSheet.Range("d4").Value
    xlo.Worksheets(1).Cells(2, 2) = myWb.ActiveSheet.TextBox1.Text

    xlw.Save
    xlw.Close
    Set xlo = Nothing
    Set xlw = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以使用myWb.Activate将主工作簿恢复为活动状态。如果您使用Worksheet对象执行此操作,它也将起作用。使用一个或另一个主要取决于您想要做什么(如果有多个工作表等)。