Как программно (VBA / NetOffice) вставить растровый объект Excel? - PullRequest
1 голос
/ 11 июля 2019

У меня есть требование для создания растрового объекта из пути Excel в документе ms-word, и я не могу найти способ сделать это за один шаг.

Текущее решениеследующее.

  1. Создание объекта поля
  2. Отключение объекта поля

Примерно так:

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.

Редактировать:

Поскольку данный ответ показал мне, что мой вопрос был не так ясен, как янадеялся, что это будет.

Итак, во-первых, единственная информация, которую я имею в настоящее время, это

  1. Путь к файлу XLSX
  2. Лист и диапазон указанного файла 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

  1. Open Xlsx/ Docx
  2. Копировать ячейки из Xlsx
  3. Перейти к Docx
  4. Использовать специальную вставку
  5. Выбрать растровое изображение
  6. Нажать OK

Вывод, который вы получаете в своем Docx, - это то, что я хочу сделать программно, без Clipboard и Paste Special, и с, по возможности, лучшим решением, чем у меня есть в настоящее время.

1 Ответ

0 голосов
/ 11 июля 2019

Вы можете использовать следующий код:

string fileName = "c://msdn.bmp";  //the picture file to be inserted
Object oMissed = doc.Paragraphs[2].Range; //the position you want to insert
Object oLinkToFile = false;  //default
Object oSaveWithDocument = true;//default
doc.InlineShapes.AddPicture(fieldName, ref  oLinkToFile, ref  oSaveWithDocument, ref  oMissed);  

См. для вставки изображения в текстовый документ с помощью c #? для получения дополнительной информации.

...