Excel VBA 运行时错误 '424' : Object Required when trying to copy TextBox

标签 excel vba runtime

我正在尝试将文本框的内容从一个工作簿复制到另一个工作簿。将单元格值从第一个工作簿复制到第二个工作簿时没有问题,但当我尝试复制文本框时,出现需要对象错误。此正在从包含我要复制的数据的工作簿中运行。使用 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

感谢您的帮助。

最佳答案

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

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

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

关于Excel VBA 运行时错误 '424' : Object Required when trying to copy TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084686/

相关文章:

Excel IF AND 语句在 true 时返回 false

excel - 需要循环遍历 AI 列,如果单元格不为空,则查看 W 列并在下一列中移动数字

java - 如何同步java代码

excel - Excel 中的自动分组/合并

excel - 通过命令行使用 LibreOffice 将 .xls 转换为 .pdf

Excel VBA - 按标题搜索列并粘贴到新工作表中

vba - 使用 VBA 以编程方式删除 Access 宏

java - 使用 PID(进程 ID)切换到特定窗口

algorithm - 从运行时分析中推导出时间复杂度

excel - 关于如何突破 Excel 中 32,767 个文本限制的新想法