Excel 如何从MS Word中删除调用代码的工作表?
当下面的代码到达.Delete指令时,它将进入一个无止境的循环。在任务管理器中停止时,将显示错误消息“Automation error”。当按下错误消息中的调试按钮时,.Delete行高亮显示。该工作表未被删除。不会显示警报消息Excel 如何从MS Word中删除调用代码的工作表?,excel,vba,ms-word,Excel,Vba,Ms Word,当下面的代码到达.Delete指令时,它将进入一个无止境的循环。在任务管理器中停止时,将显示错误消息“Automation error”。当按下错误消息中的调试按钮时,.Delete行高亮显示。该工作表未被删除。不会显示警报消息 Sub DeleteXlTable(Wb As Workbook, _ Frm As fTextLib) ' SSY 047 ++ 30 Dec 2018 Dim LibWs As Worksheet Dim
Sub DeleteXlTable(Wb As Workbook, _
Frm As fTextLib)
' SSY 047 ++ 30 Dec 2018
Dim LibWs As Worksheet
Dim Rng As Excel.Range
' Application.DisplayAlerts = False
Set LibWs = SetLibWs(Wb, Frm)
With LibWs
If .ListObjects.Count = 1 Then
If Wb.Worksheets.Count = 1 Then
With .UsedRange
.Columns.Delete
.Rows.RowHeight = 12.75
End With
.Name = "Sheet1"
Else
.Delete
End If
Else
Set Rng = .ListObjects(Frm.CbxTbl.Text).Range
Do While Rng.Row > NwsFirstLibRow
If Not .Cells(Rng.Row - 1, NwsKey).ListObject Is Nothing Then Exit Do
Set Rng = Rng.Offset(-1).Resize(Rng.Rows.Count + 1)
Loop
Rng.Rows.EntireRow.Delete
End If
End With
Application.DisplayAlerts = True
End Sub
该代码在嵌入MS Word的VBA项目中调用。Excel应用程序调用正确且可用。工作表存在,并且在出错时可以访问。我尝试用完整对象的名称Wb.Worksheets(LibWs.name).Delete替换该行,结果相同。在删除工作表之前,我尝试删除ListObject。该表已删除,但下一行出现相同错误。
即使删除的工作表是活动工作表,从独立Excel应用程序运行的类似代码也能完美工作。我想知道在删除工作表之前是否应该保存工作簿,但不知道为什么这会产生影响。有什么想法吗?根据我们之前的对话,Excel中的警报似乎导致了问题 加:
Wb.Parent.DisplayAlerts=False
其中:
Application.DisplayAlerts=False
已被注释掉。可能是因为您没有在Excel中关闭DisplayAlerts,而只是在Word中关闭。Excel可能会弹出“是否确实要删除此工作表”的弹出消息。它正在等待您的输入。尝试,
Wb.Parent.DisplayAlerts=False
在您已注释掉的Application.DisplayAlerts=False
位置,看看是否这样做。这一点很好!但是Alerts=False行已经被注释掉,代码执行不会到达Alerts。然而,我应该提到,当错误发生时,窗口是不活动的或不可见的。太悲观了!我是。你的泡泡想法似乎一针见血。更正对象并禁用警报显示后,错误消失。请把你的答案写在一个答案里,这样我就可以接受了。万分感谢!我打算屈服。