我很擅长使用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
答案 0 :(得分:1)
您已经引用了ActiveSheets而不是ActiveSheet,因此VBA会假设您已经创建了一个新对象。只需将该行更改为
即可ActiveSheet.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)
最好在每个模块的顶部声明Option Explicit,这样一个未定义的变量&#39;错误使得更容易发现变量/对象名称中的印刷错误。您可以通过转到VBA&gt;工具&gt;选项&gt;编辑器&gt;要求变量声明自动设置。