[英]Why do I keep getting application-defined or object-defined error with simple VBA macro?
我正在努力创建一个宏来简化我每天做的事情。 这个宏背后的想法是从父报表复制 7 个工作表,打开一个新工作簿,粘贴并硬编码数据,将其保存到我的桌面并关闭新工作簿。
当我调试和测试我的代码时,我遇到了一个问题,我不明白为什么会这样。 如果我启动 windows 并在我的 excel 工作簿中第一次运行宏,我第一次为 7 份报告运行它时没有遇到任何问题。 当我尝试添加代码或修复问题并再次运行代码时,问题出现了。 我不断收到“运行时错误‘1004’应用程序定义的错误或 object 定义的错误”。
我正在尝试调试,当我按 F8 进行调试并单步执行代码时,当我多次运行它试图关闭时,它似乎在第 4 步左右挂起。 我正在学习和使用 Leila Gharani 的课程,但我认为我在课程中还没有理解到这一步。 如果有人可以帮助我理解这个概念,我将不胜感激。
谢谢
'1. Select Parent Report and select BD Tab
Workbooks("Parent Report").Activate
Worksheets("BD").Select
'2. Select all cells from BD tab, open new workbook , paste data, and hardcode it.
Cells.Select
Cells.Copy
Workbooks.Add
Range("A1").PasteSpecial xlPasteAll
Cells.Select
Cells.Copy
Range("A1").PasteSpecial xlPasteValues
Cells.EntireRow.AutoFit
'3. Rename worksheet to BD and cell "A2" to BD.
ActiveWorkbook.ActiveSheet.Name = "BD"
Range("A2").Value = "BD"
Range("A1").Select
'4. Save current flash report to local drive, with monthly naming format and close it.
ActiveWorkbook.SaveAs "C:\Users\mylocaldriveinfo\Desktop\Flash Reports" & "\BD Monthly Reporting - Preliminary " & Format(Date, "mmm") & " " & Format(Date, "yyyy")
ActiveWorkbook.Close
我刚刚弄明白了。 这是我在工作中遇到的一个问题。 我禁用了它,因为我从未使用过它并且这样做我无法复制错误。
我确信这段代码不是最佳实践,但它现在有效。
Option Explicit Sub CopySheets() Const FOLDER = "C:\Users\mylocaldriveinfo\Desktop\Flash Reports\BD Monthly Reporting -" Dim wbNew As Workbook, wbMaster As Workbook, sht, n As Long Set wbMaster = ThisWorkbook ' create new workbook Set wbNew = Workbooks.Add(1) ' 1 sheet n = 1 For Each sht In Array("BD", "Sheet2", "Sheet3", "Sheet4", _ "Sheet5", "Sheet6", "SHeet7") ' 7 sheet names wbMaster.Sheets(sht).Copy After:=wbNew.Sheets(n) n = n + 1 With wbNew.Sheets(n) .UsedRange.Value = .UsedRange.Value .Range("A2") = sht End With Next With wbNew ' delete blank sheet Application.DisplayAlerts = False .Sheets(1).Delete Application.DisplayAlerts = True ' save .SaveAs Filename:=FOLDER & Format(Date, "mmm yyyy") .Close End With MsgBox "Done", vbInformation End Sub
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.