У меня есть следующий код, и мне нужны только заданные диапазоны, но каждый раз, когда я использую свой макрос, диапазон от C28 до H28 также копируется и вставляется в файл слова.
Это код, который выбирает диапазоны:
Dim rangeSP As Range
Set rangeSP = Sheets("Details").Range("C27:H27")
Dim rangeSP2 As Range
Set rangeSP2 = Sheets("Details").Range("C29:H30")
Dim rangeSpecification As Range
Set rangeSpecification = Union(rangeSP, rangeSP2)
Здесь он копируется и вставляется в файл слова:
wordDoc.Application.Selection.Find.Execute "Where it will be put"
wordApp.Selection.MoveRight Unit:=wdCharacter, Count:=1
wordApp.Selection.TypeParagraph
rangeSpecification.Copy
wordApp.Selection.PasteExcelTable False, True, False
Я хочу скопировать таблицы из Excel в файл Word. Итак, я попробовал это с Union Ranges, потому что между наборами данных есть строки, которые мне не нужны. Но когда я использую свой макрос, ненужные строки также копируются и вставляются в файл слова.
Вы спрашиваете A, но ваш код показывает B. Пожалуйста, предоставьте минимальный воспроизводимый пример вашей проблемы с достаточным количеством кода для воспроизведения проблемы.
Вы имеете в виду, что Range("C28:H28") также включен? Покажите, пожалуйста, хотя бы код копирования, пусть он выглядит логичным (для нас)...
Этот код выбирает диапазоны: Dim rangeSP As Range Set rangeSP = Sheets("Details").Range("C27:H27") Dim rangeSP2 As Range Set rangeSP2 = Sheets("Details").Range("C29:H30 ") Dim rangeSpecification As Range Set rangeSpecification = Union(rangeSP, rangeSP2) Здесь он копируется и вставляется в файл слова: wordDoc.Application.Selection.Find.Execute "" wordApp.Selection.MoveRight Unit:=wdCharacter, Count: =1 wordApp.Selection.TypeParagraph rangeSpecification.Copy wordApp.Selection.PasteExcelTable False, True, False
в "", я ищу место, куда его нужно вставить, но это прекрасно работает
Пожалуйста, не показывайте код в комментариях! Отредактируйте свой вопрос и покажите ТАМ красноречивый код...
О, моя ошибка, я поместил это в раздел «Ответ»
Оооооооо, все в вопросе теперь. нужно немного :)
Какие-либо объединенные ячейки в используемых диапазонах?
Я проверил, нет объединенных ячеек, которые используются
Да, просто проверял себя - вы получаете конкретное сообщение об ошибке, когда есть объединенные ячейки - «мы не можем сделать это с объединенной ячейкой» при попытке скопировать.
Вы не можете скопировать и вставить несмежный диапазон из Excel в Word вручную, поэтому, вероятно, то, что вы хотите сделать, не поддерживается. Вы можете сначала вставить на другой лист, а затем скопировать оттуда в Word.


Копирование и вставка нескольких диапазонов (несмежных) может быть сложной задачей. Вставка таких диапазонов в листы Excel будет происходить, как и ожидалось. Однако вставка между приложениями (Word или PowerPoint) будет включать пропущенные ячейки.
В вашей ситуации у вас есть два варианта:
rangeSpecification.Copy ActiveSheet.Range("AA1")
Application.CutCopyMode = False
Set rngData = ActiveSheet.Range("AA1").CurrentRegion
rngData.Copy
wordApp.Selection.PasteExcelTable False, True, False
rngData.Clear
ThisDocument.Tables(1).Rows(2).Delete
Спасибо за информацию. Метод с вклейкой в неиспользуемые ячейки отлично работает. Вы можете просто записать макрос во время вставки ячеек, а затем посмотреть код. Тогда вам просто нужно поставить остальные обратно и адаптировать его.
Либо ваш метод копирования/вставки данных не соответствует комбинированному диапазону, либо ваша программа ведет себя неправильно. Я попробовал ваш код, и у меня он сработал, как написано (я не переносил в Word, просто вставил на другой лист Excel).