我正在尝试将文本框的内容从一个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
代码:
{{1}}
感谢您的帮助。
答案 0 :(得分:4)
宏的问题在于,一旦在代码示例中打开了目标工作簿(xlw
),就会将其设置为 ActiveWorkbook 对象并且您收到错误,因为 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 对象执行此操作,它也会起作用。使用一个或另一个主要取决于你想做什么(如果有多张表等)。
答案 1 :(得分:1)
答案 2 :(得分:0)
问题在于这一行
xlo.Worksheets(1).Cells(2, 2) = TextBox1.Text
您在此处未使用的其他位置定义了文本框。当此文本框在xlw中定义时,Excel无法在当前工作表中找到文本框对象。
因此用
替换它 xlo.Worksheets(1).Cells(2, 2) = worksheets("xlw").TextBox1.Text