2014-01-24 2 views
1

Я пытаюсь вставить файл (любого типа) в документ Word с помощью VBA. Ниже приведен фрагмент, показывающий, как я пытаюсь это сделать. Я могу вставить файл успешно, но значок, используемый для встроенного файла, неверен. Мой обзор MSDN documentation и поисковых запросов Google заставил меня поверить, что опускание IconIndex и IconFileName подскажет VBA выбрать значок по умолчанию ... но это, похоже, не происходит (см. Рисунок ниже). Я полагаю, я должен просто пропустить шаг?Отображение значка справа при встраивании файла через VBA

Option Explicit 

Sub test_macro() 

' Attach File 

    Selection.InlineShapes.AddOLEObject _ 
     filename:="C:\newfile.docx", _ 
     LinkToFile:=False, _ 
     DisplayAsIcon:=True, _ 
     IconLabel:="This is my file" 
End Sub 

Результат:

Embedded File

Примечание: Использование Word 2007

ответ

0

Вам нужно добавить дополнительный параметр к .AddOLEObject method, который IconFileName:=. На основании записи макросов выглядит следующим образом для моего компьютера:

' Attach File 
    Dim strFilePath As String 
     strFilePath = "C:\newfile.docx" 

    Selection.InlineShapes.AddOLEObject _ 
     FileName:=strFilePath, _ 
     LinkToFile:=False, _ 
     DisplayAsIcon:=True, IconFileName:= _ 
     "C:\PROGRA~1\MICROS~2\Office12\WINWORD.EXE", _ 
     IconLabel:="This is my file" 

enter image description here

+0

Спасибо, однако, что подход работает только * если * вы хотите вставить файл слова. Что делать, если вы хотите внедрить PDF или Excel? Нецелесообразно создавать таблицу поиска для всех возможных типов, и это не обязательно, поскольку Windows уже должна знать, что значок идет с каждым расширением файла. Более того, когда я выполняю эту операцию вручную, Word выбирает правильный значок! :) Кажется, здесь где-то есть недостающая часть головоломки. – Aquadisco

+0

@Aquadisco, правда и ложь. Возможно, было бы лучшее решение, но это не так сложно. Вам просто нужно найти файлы '* .ico', которые будут представлять значки для файлов другого типа. Посмотрите, это мой локальный путь к файлу PDF, который я буду использовать как параметр «IconFileName»: «C: \ Windows \ Installer \ {AC76BA86-7AD7-1033-7B44-AB0000000001} \ SC_Reader.ico». Если бы я делал это довольно часто, я бы сохранил некоторые значки в специальной папке, чтобы быстро их использовать. –

+0

@Aquadisco, еще одна вещь - в вашем макросе вы пропустили важную часть кода, которая решает, какой значок должен быть прикреплен. Поэтому я не могу согласиться с тем, что «есть недостающая часть головоломки» по сравнению с прикреплением файлов вручную. –

0

Вам нужно добавить IconFileName и указать его WINWORD.EXE и установить IconIndex до 0

+0

, если вы хотите, чтобы downvote оставил причину, особенно после года ..... – Sorceri

+0

Hardcoding IconFileName как winword.exe всегда будет показывать значок в виде Word Document, даже если файл является PDF или Excel. Вопрос задавался вопросом о любом типе файла, а не только о текстовых документах. См. Http://stackoverflow.com/questions/32235897/how-to-embed-documents-using-vba для гибкой метки значков на основе машины пользователя и типа файла, который внедряется. – Yaegz

Смежные вопросы