excel VBA代码中的自动化错误或错误462

excel VBA代码中的自动化错误或错误462,excel,vba,automation,runtime,Excel,Vba,Automation,Runtime,我在Excel VBA中使用以下代码时出现错误“-2147417848(80010108)运行时错误”: 最近发现,通过添加 Set App = Nothing 之后 它给了我“错误462”,但我不知道为什么。调试只是正常运行,在msgboxes之后的最后会出现错误提示。我确信这不是最好的解决方案,但我发现的是: 1-无需Dim App As New excel.Application在后台打开excel文件 屏幕在打开前后更新属性权限足以不显示流程: Application.Scre

我在Excel VBA中使用以下代码时出现错误“-2147417848(80010108)运行时错误”:

最近发现,通过添加

Set App = Nothing    
之后


它给了我“错误462”,但我不知道为什么。调试只是正常运行,在msgboxes之后的最后会出现错误提示。

我确信这不是最好的解决方案,但我发现的是:

1-无需
Dim App As New excel.Application
在后台打开excel文件

屏幕在打开前后更新属性权限足以不显示流程:

Application.ScreenUpdating = False

Dim wbImport As Workbook
Set wbImport = Workbooks.Open(ThisWorkbook.Path & "\example.xlsm" 

Application.ScreenUpdating = True
2-我忘了在“错误:”句柄之前添加
Exit sub

最终代码:

    sub import()
    On Error GoTo error
    
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
      
        Dim wbImport As Workbook
        Set wbImport = App.Workbooks.Open(ThisWorkbook.Path & "\" & "example.xlsm")
    
           'DATA COPY
           Dim Lastrow As Integer
           Lastrow = ThisWorkbook.Worksheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
           ThisWorkbook.Worksheets("DATA").Range("A2:AM" & Lastrow).Copy
           wbImport.Worksheets("DATA").Range("a2").PasteSpecial Paste:=xlPasteValues 
           wbImport.Worksheets("CONFIG").Shapes("pdv").Visible = False
    
      wbImport.Close SaveChanges:=True 
      MsgBox "OK"

Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
  
exit sub 

error:

wbImport.Close SaveChanges:=True   
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True

MsgBox "FAIL"

End sub

我相信这不是最好的解决方案,但我发现:

1-无需
Dim App As New excel.Application
在后台打开excel文件

屏幕在打开前后更新属性权限足以不显示流程:

Application.ScreenUpdating = False

Dim wbImport As Workbook
Set wbImport = Workbooks.Open(ThisWorkbook.Path & "\example.xlsm" 

Application.ScreenUpdating = True
2-我忘了在“错误:”句柄之前添加
Exit sub

最终代码:

    sub import()
    On Error GoTo error
    
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
      
        Dim wbImport As Workbook
        Set wbImport = App.Workbooks.Open(ThisWorkbook.Path & "\" & "example.xlsm")
    
           'DATA COPY
           Dim Lastrow As Integer
           Lastrow = ThisWorkbook.Worksheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
           ThisWorkbook.Worksheets("DATA").Range("A2:AM" & Lastrow).Copy
           wbImport.Worksheets("DATA").Range("a2").PasteSpecial Paste:=xlPasteValues 
           wbImport.Worksheets("CONFIG").Shapes("pdv").Visible = False
    
      wbImport.Close SaveChanges:=True 
      MsgBox "OK"

Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
  
exit sub 

error:

wbImport.Close SaveChanges:=True   
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True

MsgBox "FAIL"

End sub

为什么要创建一个新的应用程序?安装免费的奇妙的Rubberduck加载项for VBA并查看代码检查。这将帮助您了解由于代码中的假设而可能出现错误的地方。提示,具体检查将列在语言机会下。@BigBen完全不知道,重新使用并改编了此网页中的代码。还尝试了Set App=CreateObject(“Excel.Application”)并获得运行时91。您退出了该应用程序。它已不在记忆中。如果对象不再运行,它如何以
nothing
终止。将对象设置为零是巫毒编程。没有必要。删除该行。为什么要创建一个新的应用程序?安装免费的奇妙的Rubberduck加载项for VBA并查看代码检查。这将帮助您了解由于代码中的假设而可能出现错误的地方。提示,具体检查将列在语言机会下。@BigBen完全不知道,重新使用并改编了此网页中的代码。还尝试了Set App=CreateObject(“Excel.Application”)并获得运行时91。您退出了该应用程序。它已不在记忆中。如果对象不再运行,它如何以
nothing
终止。将对象设置为零是巫毒编程。没有必要。请拆下线路。