Excel Vba在删除工作表后停止执行

时间:2014-09-11 06:10:58

标签: excel excel-vba vba

我是VBA的新手。我编写了一个删除特定工作表的代码。执行该删除表宏后,excel宏停止执行。它没有进一步执行..

这是我的代码..

Sub CopyAcross()
Dim sheetName As String
sheetName = "Master_Base"
If WorksheetExists(sheetName) Then
 DeleteSheet (sheetName)
End If
MsgBox "Debug"

Workbooks("Master_Base.csv").Sheets("Master_Base").Copy Before:=Workbooks("Copy of    test.xlsm").Worksheets("Sheet3")
End Sub 

Sub DeleteSheet(strSheetName As String)
' deletes a sheet named strSheetName in the active workbook
Application.DisplayAlerts = False
Sheets(strSheetName).Delete
Application.DisplayAlerts = True
End Sub

任何人都可以提供帮助,

提前致谢。

2 个答案:

答案 0 :(得分:2)

由于您正在使用多个工作簿,因此请使用对象。否则您的代码可能使用错误的工作簿/工作表

试试这个( UNTESTED

Sub CopyAcross()
    Dim wbI As Workbook, wbO As Workbook

    '~~> The workbook from where the code is running
    Set wbO = ThisWorkbook

    '~~> Here you open the csv
    Set wbI = Workbooks.Open("E:\OPM\OPM Sheet\Master_Base.csv")

    '~~> This will delete the sheet if it exists
    '~~> no need to check if it exists
    On Error Resume Next
    Application.DisplayAlerts = False
    wbO.Sheets("Master_Base").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0

    '~~> The csv will always have 1 sheet
    '~~> so no need providing a name
    wbI.Sheets(1).Copy Before:=wbO.Worksheets("Sheet3")
End Sub

答案 1 :(得分:0)

我在使用Excel版本16.0.10730.20264 32位的Windows 7计算机上遇到了相同的问题,代码运行正常,没有问题。但是,在具有相同Excel安装版本的Windows 10计算机上,该宏将立即在Sheets.Delete行之后停止执行。

我发现只有在我尝试操作包含在宏中打开的包含VBA代码的工作簿的情况下才会发生这种情况。

此问题是由计算机上的宏安全设置引起的。如果在打开工作簿之前将“自动化安全性”设置为“低”,则不应再收到错误:

使用代码:

Application.AutomationSecurity = msoAutomationSecurityLow