Мне сложно проверить, что вы делаете, но логически я считаю, что следующее должно работать, хотя может быть одна проблема (продолжайте читать) ...
Обратите внимание, как этот код использует WordRange
объект как цель для нового контента.После вставки неясно, будет ли docRange
перед вставленным контентом или будет содержать вставленный контент.Если он содержит вставленный контент, код должен работать.Если это перед вставленным контентом, то следующее изображение появится перед первым.В этом случае повторите строку Set docRange = wd.Content
сразу после docRange.Paste
.
Set wd = wdApp.Documents.Add ' create a new document
Dim docRange as Object 'Word.Range
Set docRange = wd.Content
wdApp.Visible = True
'change sheet and range below
ActiveSheet.Range("a1:z43").CopyPicture xlPrinter
docRange.Paste
'Go to the end
docRange.Collapse 0 'wdCollapseEnd
docRange.InsertBreak Type:=wdSectionBreakNextPage
ActiveSheet.Range("a43:z76").CopyPicture xlPicture
docRange.Paste
В ответ на запрос в комментариях о том, как код работает подробно:
Dim docRange as Object 'Word.Range
Объявляет переменную объекта для хранения части документа, с которой работает код.Поскольку код в вопросе, запущенный из Excel, по-видимому, использует поздняя привязка (без ссылки на библиотеку объектов Word), он объявлен как Object
.
Если бы использовалось раннее связывание (в проекте кода есть ссылка на библиотеку Word), тогда было бы лучше объявить его As Word.Range
.Я включаю тип данных объекта Word (Word.Range
) для полноты картины и возможности исследовать объект и его свойства в справке.
Set docRange = wd.Content
Этот создает экземпляр Word.Range
объект, содержащий всю основную часть документа (экземпляр wd
создается в коде в вопросе к целевому документу Word).
После вставки docRange
по-прежнему относится ко всемусодержание документа, включая то, что было вставлено.Если разрыв раздела и второе действие вставки должны быть выполнены немедленно, это удалит содержимое диапазона.(Думайте об этом, как о выделении текста в Word, а затем о наборе текста: то, что было выбрано, заменяется тем, что было напечатано. Чтобы избежать этого, нужно нажать клавишу со стрелкой вправо, прежде чем вводить текст, чтобы новое содержимое соответствовало тому, что было выбрано.)
По этой причине диапазон «свернут» (как при нажатии клавиши со стрелкой).Затем вставляется разрыв раздела и выполняется следующее действие вставки.