Страницы: 1
RSS
Передача текста из Excel в Word с сохранением форматирования текста
 
Здравствуйте!

Из листа Эксель в Word передаю данные:
Код
wd.Paragraphs(1).Range.Text = Sheets("Лист1").Range("A1")
Но в этой ячейке у меня отформатированный текст - расставлены степени у чисел(Формат-Шрифт ячеек-Надстрочный)
Соответственно при передаче форматирование теряется. Как это можно исправить?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Доброе утро! Попробуйте так:
Код
Sub Test()
  Const wdSingleCellText = 5
  Dim wd As Object
  Set wd = GetObject(, "Word.Application").ActiveDocument
  Sheets(1).Range("A1").Copy
  wd.Paragraphs(1).Range.PasteAndFormat wdSingleCellText
  Application.CutCopyMode = False
End Sub
Изменено: ZVI - 04.12.2017 09:30:41
 
ZVI, попробовал. Получается что вставляется ячейка, верно? А если она вставляется в таблицу, то как сделать чтобы при вставке она тоже форматировалась. Сейчас вставка идет с выравниванием по левому краю. А нужно чтобы посередине.
И объясните какой смысл в константе?
Спасибо!
Изменено: Artem1977 - 04.12.2017 09:50:28
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал: Получается что вставляется ячейка, верно?
Нет, вставляется только форматированный текст. Проверяется в Worde так: Debug.Print ActiveDocument.Tables.Count
По поводу константы - она такая же в Word-е. Продублирована, так как Excel ничего не знает про константы Word-а, если не установлена принудительно ссылка на объектную модель Word через VBE-Tools-References.
 
ZVI, тогда странно. У меня копируется и вставляется именно так, как выглядит ячейка в Excel
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Может быть возможно сделать через автозамену? Вот только при такой вставке автозамена не срабатывает. Может ее можно как-то после вставки текста принудительно запустить?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Артем, копируется форматированный текст ячейки без самой ячейки (нет рамок и т.п.)
Вы попробуйте сначала добиться результата вручную, там много нюансов может оказаться.
Когда отрепетируете всё, то поступите так:
1. В Excel скопируйте то, что нужно
2. Перейдите в Word, включите там макрорекордер и выполните вставку и т.п.
3. Выключите макрорекордер Word-а и посмотрите, что он там записал.
4. При необходимости отредактируйте и отладьте код в Word-е
5. Перенесите код в Excel с учетом его переменных для Word.
 
У меня копируется и вставляется как ячейка  :(
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
 
Цитата
Artem1977 написал: У меня копируется и вставляется как ячейка
С рамками и заливкой ячейки? Что выдает в Word-е  Debug.Print ActiveDocument.Tables.Count ? Приложите архив с примером того, что получилось и как нужно.
В любом случае, попробуйте сделать то, что предлагалось в сообщении #7.
 
ZVI, Да, с рамками и заливкой. Debug.print выдаёт значение 1. Если делать так как вы предлагаете в сообщении #7, то также переноситься ячейка.
В архиве два файла. В .docx размещён результат копирования текста из экселя, а также то что должно было быть.
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Страницы: 1
Наверх