Excel 将工作表从一个工作簿复制到另一个工作簿

Excel 将工作表从一个工作簿复制到另一个工作簿,excel,vba,worksheet-function,Excel,Vba,Worksheet Function,我是excel VBA宏的新手,所以我的问题应该很容易解决 我正在尝试打开一个文件夹中的所有文件,稍微编辑这些文件,然后将它们复制到现有工作簿中。不幸的是,出现运行时错误“424”:需要对象 突出显示的是第行: ActiveSheets.Copy After:=工作簿(“Macro sheets.xlsm”).sheets(sheets.Count) 看起来“Macro sheets.xlsm”不存在,但这是运行此宏的工作簿的名称 我已经通过了很多论坛,尝试了很多代码,但仍然没有找到解决方案 拜

我是excel VBA宏的新手,所以我的问题应该很容易解决

我正在尝试打开一个文件夹中的所有文件,稍微编辑这些文件,然后将它们复制到现有工作簿中。不幸的是,出现运行时错误“424”:需要对象

突出显示的是第行:

ActiveSheets.Copy After:=工作簿(“Macro sheets.xlsm”).sheets(sheets.Count)

看起来“Macro sheets.xlsm”不存在,但这是运行此宏的工作簿的名称

我已经通过了很多论坛,尝试了很多代码,但仍然没有找到解决方案

拜托,有人能帮我吗

多谢各位

一月

Sub-nahranidat()
将文件设置为变体
将FolderPath调暗为变体
YourFolderPath=“K:\MMR\2015\BO\macro files connection\”
ChDir YourFolderPath
YourFile=Dir(YourFolderPath&“*.*”)
当您的文件“”时执行此操作
工作簿。打开文件名:=YourFolderPath&YourFile
YourFile=Dir
设置myObject=ActiveWindow
如果Activeworkbook.Worksheets.Count=2,则
第(1)页。选择
ActiveSheet.Name=Left(Activeworkbook.Name,InStr(Activeworkbook.Name,“.”-1)和“\u 1\u月”
第(2)页。选择
ActiveSheet.Name=Left(Activeworkbook.Name,InStr(Activeworkbook.Name,“.”-1)和“\u by\u month”
Activeworkbook.Sheets.Select
ActiveSheets.Copy After:=工作簿(“Macro sheets.xlsm”).sheets(sheets.Count)
其他的
第(1)页。选择
ActiveSheet.Name=Left(Activeworkbook.Name,InStr(Activeworkbook.Name,“.”-1)
Activeworkbook.Sheets.Select
ActiveSheets.Copy After:=工作簿(“Macro sheets.xlsm”).sheets(sheets.Count)
如果结束
Application.CutCopyMode=False
myObject.Close,SaveChanges:=False
环
端接头

您引用的是ActiveSheet而不是ActiveSheet,因此VBA将假定您创建了一个新对象。把那行改成

ActiveSheet.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)

在每个模块的顶部声明Option Explicit是一种很好的做法,这样“variable not defined”错误就更容易发现变量/对象名称中的印刷错误。您可以通过进入VBA>工具>选项>编辑器>要求变量声明来自动设置此选项。

你好,Dave,非常感谢您的回答。现在宏在else之后适用于零件-对于只有一个工作表的工作簿也是如此。你知道如何解决两张选定工作表的问题吗?
如果Activeworkbook.worksheets.Count=2,那么就选择工作表(1)。选择ActiveSheet.Name=Left(Activeworkbook.Name,InStr(Activeworkbook.Name,“.”)-1)和“1个月”工作表(2)。选择ActiveSheet.Name=Left(Activeworkbook.Name,InStr)(Activeworkbook.Name,“.”-1)和“按月”Activeworkbook.Sheets.Select“这里是问题:ActiveSheets.Copy After:=工作簿(“Macro Sheets.xlsm”).Sheets(Sheets.Count)'从这里开始工作:Else
它又是对Activesheets的引用。您可以更改Activeworkbook.sheets.Select for Activeworkbook.sheets.copy,而不是选择所有工作表然后尝试复制它们
ActiveSheet.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)