我已经有了一个创建工作表和其他东西的宏。创建工作表后,我是否要调用另一个宏,将数据从第二个excel (其打开)复制到第一个活动的excel文件。
首先,我想复制到头文件,但我不能让它工作-不断得到错误。
Sub CopyData(sheetName as String)
Dim File as String, SheetData as String
File = "my file.xls"
SheetData = "name of sheet where data is"
# Copy headers to sheetName in main file
Workbooks(File).Worksheets(SheetData).Range("A1").Select # fails here: Method Select for class Range failed
Workbooks(File).Worksheets(SheetData).Range(Selection, Selection.End(xlToRight)).Select
Workbooks(File).Worksheets(SheetData).Selection.Copy ActiveWorkbook.Sheets(sheetName).Cells(1, 1)
End Sub出什么问题了?
我真的想避免激活"my file.xls“。
编辑:我不得不放弃它,并将SheetData复制到目标文件作为新的工作表,然后它才能工作。Find and select multiple rows
发布于 2011-03-07 21:28:21
两年后(在Google上找到了这个,所以对其他人来说)……如上所述,您不需要选择任何内容。这三行代码:
Workbooks(File).Worksheets(SheetData).Range("A1").Select
Workbooks(File).Worksheets(SheetData).Range(Selection, Selection.End(xlToRight)).Select
Workbooks(File).Worksheets(SheetData).Selection.Copy ActiveWorkbook.Sheets(sheetName).Cells(1, 1)
可以替换为
Workbooks(File).Worksheets(SheetData).Range(Workbooks(File).Worksheets(SheetData). _
Range("A1"), Workbooks(File).Worksheets(SheetData).Range("A1").End(xlToRight)).Copy _
Destination:=ActiveWorkbook.Sheets(sheetName).Cells(1, 1)
这应该可以绕过select错误。
发布于 2014-01-13 03:51:12
最佳实践是打开源文件(如果您不想被打扰,则具有错误的可见状态),读取您的数据,然后我们将其关闭。
在下面的链接中可以找到一个运行良好且干净的代码:
http://vba-useful.blogspot.fr/2013/12/how-do-i-retrieve-data-from-another.html
发布于 2009-01-27 09:50:31
如果"my file.xls“不影响屏幕,你会乐意激活它吗?关闭屏幕更新是实现这一点的一种方法,它还具有性能改进(如果您在切换工作表/工作簿时执行循环,则意义重大)。
执行此操作的命令为:
Application.ScreenUpdating = False当你的宏完成时,不要忘了把它转回True。
https://stackoverflow.com/questions/482717
复制相似问题