Как я могу удалить рабочий лист с кодом из MS Word? - PullRequest
0 голосов
/ 30 декабря 2018

Когда приведенный ниже код достигает инструкции .Delete, он входит в бесконечный цикл.При остановке в диспетчере задач отображается сообщение об ошибке «Ошибка автоматизации».При нажатии кнопки «Отладка» в сообщении об ошибке строка .Delete выделяется.Лист не удален.Предупреждающее сообщение не отображается.

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

Код вызывается в проекте VBA, встроенном в MS Word.Приложение Excel вызывается правильно и доступно.Рабочий лист существует и доступен на момент возникновения ошибки.Я попытался заменить строку полным именем объекта, Wb.Worksheets (LibWs.Name) .Delete, с тем же результатом.Я попытался удалить ListObject перед удалением листа.Таблица была удалена, но такая же ошибка произошла в следующей строке.Аналогичный код, запускаемый из автономного приложения Excel, работает отлично, даже если удаленный лист является активным.Интересно, стоит ли сохранять рабочую книгу перед удалением листа, но я не знаю, почему это должно иметь значение.Любые идеи, что я мог бы сделать?

1 Ответ

0 голосов
/ 31 декабря 2018

Согласно нашему предыдущему разговору, в Excel возникает предупреждение о возникновении проблемы.

Добавить:

Wb.Parent.DisplayAlerts = False

Где:

Application.DisplayAlerts = False

закомментировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...