我是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
任何人都可以提供帮助,
提前致谢。
答案 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