Скопировать форматирование текста в скрипт excel to word

У меня есть действующий скрипт, он копирует целевой текст из листа Excel в открытый документ Word, но мне интересно, возможно ли, что он также копирует форматирование в тексте, то есть часть текста выделена жирным шрифтом и подчеркнута. В настоящее время он просто копирует текст в слово.

Sub Updated_Excel_Data_to_Word() Dim rYes As Range, r As Range Dim sData As String Dim tData As String Dim uData As String Dim objWord As Object Set rYes = Range("B2:B34") For Each r In rYes If r = "X" Then sData = sData & r.Offset(0, 1) & Chr(13) End If Next r Set rYes = Range("F2", Range("F" & Rows.Count).End(xlUp)) For Each r In rYes If r = "X" Then tData = tData & r.Offset(0, 1) & Chr(13) End If Next r Set rYes = Range("J2", Range("J" & Rows.Count).End(xlUp)) For Each r In rYes If r = "X" Then uData = uData & r.Offset(0, 1) & Chr(13) End If Next r Set objWord = GetObject(, "word.application") objWord.activeDocument.Bookmarks("One").Select objWord.Selection.TypeText (sData) objWord.activeDocument.Bookmarks("Two").Select objWord.Selection.TypeText (tData) objWord.activeDocument.Bookmarks("Three").Select objWord.Selection.TypeText (uData) End Sub 

Да, я думаю, что это должно быть возможно, но требует некоторых структурных изменений в вашем коде. Вам нужно будет реплицировать операцию «вставить» в Word, а не (как вы сейчас делаете), сохраняя только исходный текст в ваших sData , tData , uData .

Давайте также очистим это с помощью дополнительной подпрограммы, так как вы повторяете цикл For Each r за несколько разных объектов диапазона.

 Sub Updated_Excel_Data_to_Word() Dim rYes As Range Dim objWord As Object ' Get a handle on Word Application Set objWord = GetObject(, "word.application") ' Assign the range Set rYes = Range("B2:B34") ' Pass the range and Word object variables to the helper function Call PasteValuesToWordBookmark(rYes, objWord, _ objWord.activeDocument.Bookmarks("One")) ' repeat as needed, just changing the range & bookmarks Set rYes = Range("F2", Range("F" & Rows.Count).End(xlUp)) Call PasteValuesToWordBookmark(rYes, objWord, _ objWord.activeDocument.Bookmarks("Two")) Set rYes = Range("J2", Range("J" & Rows.Count).End(xlUp)) Call PasteValuesToWordBookmark(rYes, objWord, _ objWord.activeDocument.Bookmarks("Three")) End Sub Sub PasteValuesToWordBookmark(rng as Range, wdApp as Object, _ wdBookmark as Object) Dim r as Range For Each r In rng If r = "X" Then wdBookmark.Select r.Offset(0, 1).Copy 'Copy the cell from Excel 'in my testing this automatically adds a carriage return, so ' we don't need to explicitly append the Chr(13)/vbCR character wdApp.CommandBars.ExecuteMSO "PasteSourceFormatting" End If Next r End Sub 

Вот пример вывода, который сохранил все форматирование текста (жирный шрифт, подчеркивание, цвет шрифта и т. Д.).

введите описание изображения здесь

Это должно работать во всех приложениях Office (см. Здесь аналогичные вопросы и ответы, касающиеся Excel-> PowerPoint), и, как уже упоминалось:

CommandBars.ExecuteMso не очень хорошо документирован по сравнению со многими другими методами. Ссылка на свойство Application.CommandBars даже не упоминает метод ExecuteMso , в котором я нашел здесь некоторую информацию:

http://msdn.microsoft.com/en-us/library/office/ff862419(v=office.15).aspx

Этот метод полезен в тех случаях, когда нет объектной модели для конкретной команды. Работает с элементами управления, которые являются встроенными кнопками, toggleButtons и splitButtons.

Вам понадобится список параметров idMso для изучения, которые входят в состав довольно большого загружаемого файла, актуального для Office 2013. Я полагаю:

http://www.microsoft.com/en-us/download/details.aspx?id=727

  • Чтение файла Excel со встроенными документами Word в C #
  • Заменить текст в закладке в Word без удаления закладки
  • Автоматизация слияния
  • Получение текста из Word в Excel с помощью VBA
  • Скопируйте таблицу из Word, затем вставьте в Excel с помощью VB.NET
  • Вставить графику Excel в документ Word с OpenXML, работающим с Word 2010 и 2003
  • VBA Count для устранения бесконечной петли (Excel в Word)
  • Откройте документ Microsoft Word в Excel с помощью VBA
  • Как добавить таблицу в каждую итерацию цикла?
  • Путь к файлу ссылок в документе Word
  • Преобразование документов Word в Excel с помощью VBscript
  • Interesting Posts

    Как получить стиль шрифта пустой ячейки excel в Java, Apache POI?

    Вычисление разницы между количеством двух полей даты

    Формула, использующая ячейки в электронной таблице

    Код VBA только удаляет часть того, что он должен

    Запустите макрос Excel во всех файлах xls в папке

    Блокировать определенную группу ячеек после ввода данных в одну ячейку

    Как протестировать несколько аргументов командной строки (sys.argv

    Создать новый лист с копией

    Используя метод find для поиска следующей доступной пустой строки

    Сообщение об ошибке при использовании «Добавить текущий выбор для фильтрации» в Excel, подключенном к Cube

    Несколько уровней разрешений в Excel

    Почему я не могу опубликовать надстройку над Excel?

    Excel Power View – рабочий лист с листом PowerView, который не отображается в файле Excel

    Почему мой Excel поврежден каждый раз, когда я вставляю более 21 пользователя, набирая XML или через C #?

    Outlook vba application.goto

    Давайте будем гением компьютера.