#vba #ms-word
#vba #ms-word
Вопрос:
У меня есть файл word, и я хочу удалить некоторые страницы в нем. Я использую эти коды Kutools для удаления
Sub DeletePagesInDoc()
Dim xRange As Range
Dim xPage As String
Dim xDoc As Document
Dim xArr
Dim I, xSplitCount As Long
Application.ScreenUpdating = False
Set xDoc = ActiveDocument
xPage = InputBox("Enter the page numbers of pages to be deleted: " amp; vbNewLine amp; _
"use comma to separate numbers", "KuTools for Word", "")
xArr = Split(xPage, ",")
xPageCount = UBound(xArr)
For I = xPageCount To 0 Step -1
Selection.GoTo wdGoToPage, wdGoToAbsolute, xArr(I)
xDoc.Bookmarks("Page").Range.Delete
Next
Application.ScreenUpdating = True
End Sub
Некоторые страницы удаляются, но некоторые страницы нет. Word выдает мне эту ошибку The range cannot be deleted.
, почему я получаю эту ошибку?
Комментарии:
1. Просто предположение здесь: когда вы удаляете диапазон, остальные диапазоны переопределяются, чтобы заполнить пробел, который занимал удаленный диапазон. Вам необходимо обновлять оставшиеся диапазоны в каждом цикле. Кроме того, одношаговое прохождение кода может оказаться полезным
2. Диапазон может содержать что-то защищенное. Когда это произойдет, ОСТАНОВИТЕ макрос и посмотрите на документ Word, чтобы увидеть, что находится в выделении.
3. @CindyMeister Да, в нем что-то защищено, но как я делаю это незащищенным. Когда я щелкаю правой кнопкой мыши по таблице, опция удаления таблицы отключена. Как мне его включить?
4. Это трудно сказать, не зная больше о таблице / документе. Что, безусловно, может быть проблемой, так это то, что таблица разбита на страницы. Так ли это здесь? И если / когда это произойдет, предполагается ли удалить всю таблицу целиком?