У меня есть требование для создания растрового объекта из пути Excel в документе ms-word, и я не могу найти способ сделать это за один шаг.
Текущее решениеследующее.
- Создание объекта поля
- Отключение объекта поля
Примерно так:
Dim fld As Field
Set fld = Selection.Fields.Add(Selection.Range, WdFieldType.wdFieldLink, "Excel.Sheet.12 ""[Path to Xlsx]"" ""[Sheet+Range]"" \b", False)
fld.Update
fld.Unlink
\b
говорит, что поле должно быть представлено как объект Bitmap. - При
fld.Unlink
я удаляю ссылку, и Bitmap остается.
Есть ли способ напрямую создатьРастровый объект (InlineShape) без полевого подхода?
Я пытался записать макрос в ms-word, чтобы увидеть, как это делает ms-word, но, к сожалению, он дает только:
Selection.PasteSpecial Link:=False, DataType:=wdPasteBitmap, Placement:= wdInLine, DisplayAsIcon:=False
Если возможно, я бы хотел избежать работы с Clipboard и PasteSpecial.
Редактировать:
Поскольку данный ответ показал мне, что мой вопрос был не так ясен, как янадеялся, что это будет.
Итак, во-первых, единственная информация, которую я имею в настоящее время, это
- Путь к файлу XLSX
- Лист и диапазон указанного файла XLSX
например.C: \ test \ myWorkbook.xlsx Sheet1! A1: D10
Вот и вся информация, которая у меня есть.С помощью этой информации мне нужно программно создать растровое изображение внутри моего документа в формате ms-word.
Как показано выше, у меня уже есть решение, которое делает именно это, делая ССЫЛКУ на указанный файл XLSX и после его обновления.удаление этой ссылки, чтобы оставить только растровое изображение.Растровое изображение остается здесь из-за флага \b
, который указывает ССЫЛКЕ создавать растровое изображение вместо RTF / HTML.
Теперь у меня вопрос, есть ли другой способ, которым я сейчас это делаю.
Текущий ответ действительно вставляет растровое изображение в мой документ ms-word, но откуда я могу получить растровое изображение, так как ответ не знает о том, что мне нужно изображение книги Excel?Как я уже говорил ранее, у меня есть только ограниченная информация, и у меня нет растрового изображения.
То, чего я хочу достичь, может быть сделано без программно с помощью функциональности Paste Special https://support.office.com/en-us/article/paste-special-e03db6c7-8295-4529-957d-16ac8a778719
- Open Xlsx/ Docx
- Копировать ячейки из Xlsx
- Перейти к Docx
- Использовать специальную вставку
- Выбрать растровое изображение
- Нажать OK
Вывод, который вы получаете в своем Docx, - это то, что я хочу сделать программно, без Clipboard и Paste Special, и с, по возможности, лучшим решением, чем у меня есть в настоящее время.