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

时间:2014-08-28 15:08:55

标签: excel vba worksheet-function

我很擅长使用VBA宏,所以我的问题应该很容易解决。

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

突出显示的是行:

ActiveSheets.Copy之后:=工作簿(“Macro sheets.xlsm”)。表格(Sheets.Count)

它看起来像“Macro 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

1 个答案:

答案 0 :(得分:1)

您已经引用了ActiveSheets而不是ActiveSheet,因此VBA会假设您已经创建了一个新对象。只需将该行更改为

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

最好在每个模块的顶部声明Option Explicit,这样一个未定义的变量&#39;错误使得更容易发现变量/对象名称中的印刷错误。您可以通过转到VBA&gt;工具&gt;选项&gt;编辑器&gt;要求变量声明自动设置。