从一个工作簿复制工作表到其他
问题描述:
我对excel VBA宏很新,所以我的问题应该很容易解决。从一个工作簿复制工作表到其他
我试图打开一个文件夹中的所有文件,编辑这些文件一点点,并将它们复制到现有的工作簿。不幸的是,发生运行时错误'424':Object required。
聚焦的行:
ActiveSheets.Copy后:=工作簿( “宏sheets.xlsm”)表(Sheets.Count)
它看起来像 “宏sheets.xlsm”,其实不然。存在,但这是工作簿的名称,我从中运行此宏。
我已经经历了许多论坛,尝试了很多代码,但仍然没有找到解决方案。
请问有人能帮我吗?
谢谢了很多,
月
Sub nahranidat()
Dim YourFile As Variant
Dim YourFolderPath As Variant
YourFolderPath = "K:\MMR\2015\BO\macro files connection\"
ChDir YourFolderPath
YourFile = Dir(YourFolderPath & "*.*")
Do While YourFile <> ""
Workbooks.Open Filename:=YourFolderPath & YourFile
YourFile = Dir
Set myObject = ActiveWindow
If Activeworkbook.Worksheets.Count = 2 Then
Sheets(1).Select
ActiveSheet.Name = Left(Activeworkbook.Name, InStr(Activeworkbook.Name, ".") - 1) & "_1_month"
Sheets(2).Select
ActiveSheet.Name = Left(Activeworkbook.Name, InStr(Activeworkbook.Name, ".") - 1) & "_by_month"
Activeworkbook.Sheets.Select
ActiveSheets.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)
Else
Sheets(1).Select
ActiveSheet.Name = Left(Activeworkbook.Name, InStr(Activeworkbook.Name, ".") - 1)
Activeworkbook.Sheets.Select
ActiveSheets.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)
End If
Application.CutCopyMode = False
myObject.Close , SaveChanges:=False
Loop
End Sub
答
你引用ActiveSheets代替ActiveSheet所以VBA将假设你已经创建了一个新的对象。只要改变该行
ActiveSheet.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)
这是很好的做法,申报方案在每个模块的顶部明确,这样一个“变量没有定义”错误会使得它更容易发现变量/对象名称拼写错误。您可以通过转到VBA>工具>选项>编辑器>需要变量声明来自动设置它。
你好戴夫,非常感谢你的回答。现在,该宏适用于其他部分之后的部分 - 所以对于具有一个工作表的工作簿。你有什么想法,如何解决两个选定的工作表的问题? – 2014-08-29 07:41:05
'如果Activeworkbook.Worksheets.Count = 2然后 表(1)。选择 ActiveSheet.Name =左(Activeworkbook.Name,InStr函数(Activeworkbook.Name, “”) - 1)& “_1_month” 表(2)。选择 ActiveSheet.Name =左( “” Activeworkbook.Name,InStr函数(Activeworkbook.Name,) - 1)& “_by_month” Activeworkbook.Sheets.Select “这里的问题是: ActiveSheets.Copy After:= Workbooks(“Macro sheets sheets.xlsm”)。Sheets(Sheets.Count) 'from here works: Else' – 2014-08-29 07:49:14
这是对Activesheets的参考。您可以选择Activeworkbook.Sheets.Copy – Dave 2014-08-29 08:04:02