【发布时间】:2018-04-15 08:34:32
【问题描述】:
希望有人能帮我解决这个问题。
我有一个子程序可以将我的数据从这个工作簿复制到另一个现有工作簿(报告工作簿)。
当我尝试运行代码时,在运行时打开报告工作簿后它突然停止,我注意到它进入了设计模式。因此,阻碍了例程的执行。
但是当我尝试在子程序上放置一个断点并再次继续时。它执行没有问题。这似乎有点奇怪。
我有点想弄清楚这一点。
到目前为止,这是我尝试过的故障排除步骤。
- 试图在另一台机器上运行工作簿。
- 我已尝试删除报告工作簿上的所有 Workbook_Open。
- 试图删除报告工作簿上的所有宏代码。
- 插入错误处理程序。不幸的是,没有出现错误。
- 试图删除子程序上的 DoEvents 代码。
但仍然没有运气。它停止执行代码。
Private Sub TransferRawData()
Dim wsPTRawData As Worksheet, wbPTWorkBook As Workbook, wsOutputRaw As Worksheet
Dim filePath As String, FileName As String, ptTargetRow As Long
Application.EnableEvents = False
Application.StatusBar = "Exporting All Raw Data... Please wait a moment..."
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
filePath = ThisWorkbook.Path & "\"
FileName = filePath & pt_FileName
Set wbPTWorkBook = Workbooks.Open(FileName:=FileName, UpdateLinks:=0, IgnoreReadOnlyRecommended:=True)
DoEvents
Set wsPTRawData = wbPTWorkBook.Worksheets(pt_ProdRawSheet)
Set wsOutputRaw = ThisWorkbook.Sheets(merger_prodOutputSheet)
ptTargetRow = wsPTRawData.Range("A" & Rows.Count).End(xlUp).Row + 1
If lastRow(wsOutputRaw, "A") > 1 Then wsOutputRaw.Range("A2:F" & lastRow(wsOutputRaw, "A")).Copy wsPTRawData.Range("A" & ptTargetRow)
wbPTWorkBook.Close True
Set wsOutputRaw = Nothing
Set wsPTRawData = Nothing
Set wbPTWorkBook = Nothing
End Sub
顺便说一句,我有 3 套使用上述代码的工作簿。他们都将复制报告工作簿上的数据。但是他们都在执行传输程序时遇到了麻烦。
更多信息。一旦我运行例程并执行 Workbooks.Open 事件。这是 VBA 项目窗口和 Excel 窗口的屏幕截图。
【问题讨论】:
-
显示有错误吗? ...如果可以,请发布屏幕截图
-
嗨@jsotola,它没有出现任何错误消息。但我添加了屏幕截图,以便您更好地了解我的问题。
-
你能在里面添加错误捕获并输出错误信息吗?有时会有隐藏的错误信息
-
不知道这是否是所有代码,但 Calculation 和 EnableEvents 设置是持久的 - 您应该在代码退出之前重新设置它们。
-
嗨@TimWilliams 是的,实际上我可以在此例程中省略所有这些性能增强器设置。因为在我执行项目中的所有例程之前,我已经将它们全部设置好并再次设置它们。我刚刚在此例程中添加了所有这些设置以供参考。