Как удалить страницы документа MS Word с помощью Excel VBA?

У меня есть список страниц, которые я хочу удалить в 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


Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Например:

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

Ошибка «Запрошенный элемент коллекции не существует». Я обнаружил, что эта ошибка была вызвана тем, что не была создана закладка в Microsoft Word. Есть ли способ удалить страницы без создания закладки в документе?

Pramod Pandit 30.12.2022 05:40

«Есть ли способ удалять страницы без создания закладки в документе?» Вы хотя бы попробовали код, который я разместил? Вам не нужно создавать никаких закладок, чтобы он работал.

macropod 30.12.2022 06:20

Я сделал. Это дало мне «Ошибка автоматизации. Ошибка удаленного вызова процедуры». Также, когда я нажимаю «Отладка» и навожу указатель мыши на Name, это дает мне ошибку <Переменная объекта или переменная блока не установлена>.

Pramod Pandit 30.12.2022 06:30

Скорее всего, это связано с тем, что вы указали неверное имя файла и/или путь к файлу. Либо так, либо у вас запущен потерянный сеанс Word — проверьте через диспетчер задач. PS: я протестировал совместную работу и знаю, что она работает. Чтобы понять, почему вам не нужно создавать никаких закладок — и понять, что делает код — см.: learn.microsoft.com/en-us/office/vba/word/concepts/…

macropod 30.12.2022 06:37

Другие вопросы по теме