У меня есть список страниц, которые я хочу удалить в MS Word, например номер страницы: с 5 по 10, с 12 по 16 и т. д. через MS Excel VBA. Я нашел код для удаления непрерывных страниц через MS Excel VBA, но при запуске он выдает ошибку «Запрошенный член коллекции не существует». Как это можно решить?
Sub DeletePages()
Dim WordApp As Word.Application
Dim myDoc As Word.Document
' Open the Word document
Set WordApp = New Word.Application
Set myDoc = WordApp.Documents.Open("C:\mydocument.docx")
' Delete pages 3 to 5
myDoc.Range(Start:=myDoc.Bookmarks("Page3").Range.Start, _
End:=myDoc.Bookmarks("Page5").Range.End).Delete
'Unbind
Set WordApp = Nothing
End Sub


Например:
Sub Demo()
Dim wdApp As New Word.Application, wdDoc As Word.Document, i As Long
With wdApp
.Visible = False
.DisplayAlerts = wdAlertsNone
Set wdDoc = .Documents.Open(FileName: = "C:\mydocument.docx", AddToRecentFiles:=False, ReadOnly:=True, Visible:=False)
With wdDoc
For i = .ComputeStatistics(wdStatisticPages) To 1 Step -1
Select Case i
Case 5 To 10, 12 To 16
.Range.GoTo(What:=wdGoToPage, Name:=i).GoTo(What:=wdGoToBookmark, Name: = "\page").Delete
End Select
Next
.Close SaveChanges:=True
End With
.DisplayAlerts = wdAlertsAll
.Quit
End With
Set wdDoc = Nothing: Set wdApp = Nothing
End Sub
Чтобы понять, почему вам не нужно создавать никаких закладок — и понять, что делает код — см.:
https://learn.microsoft.com/en-us/office/vba/word/concepts/miscellaneous/predefined-bookmarks
«Есть ли способ удалять страницы без создания закладки в документе?» Вы хотя бы попробовали код, который я разместил? Вам не нужно создавать никаких закладок, чтобы он работал.
Я сделал. Это дало мне «Ошибка автоматизации. Ошибка удаленного вызова процедуры». Также, когда я нажимаю «Отладка» и навожу указатель мыши на Name, это дает мне ошибку <Переменная объекта или переменная блока не установлена>.
Скорее всего, это связано с тем, что вы указали неверное имя файла и/или путь к файлу. Либо так, либо у вас запущен потерянный сеанс Word — проверьте через диспетчер задач. PS: я протестировал совместную работу и знаю, что она работает. Чтобы понять, почему вам не нужно создавать никаких закладок — и понять, что делает код — см.: learn.microsoft.com/en-us/office/vba/word/concepts/…
Ошибка «Запрошенный элемент коллекции не существует». Я обнаружил, что эта ошибка была вызвана тем, что не была создана закладка в Microsoft Word. Есть ли способ удалить страницы без создания закладки в документе?