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