Уменьшить размер файла для диаграмм, вставленных из excel в word

Я создавал отчеты, копируя некоторые диаграммы и данные из документа excel в документ word. Я вставляю в content control, поэтому я использую ChartObject.CopyPicture в excel и ContentControl.Range.Paste в word. Это делается в цикле:

Set ws = ThisWorkbook.Worksheets("Charts")
With ws
For Each cc In wordDocument.ContentControls

    If cc.Range.InlineShapes.Count > 0 Then
        scaleHeight = cc.Range.InlineShapes(1).scaleHeight
        scaleWidth = cc.Range.InlineShapes(1).scaleWidth
        cc.Range.InlineShapes(1).Delete
        .ChartObjects(cc.Tag).CopyPicture Appearance:=xlScreen, Format:=xlPicture
        cc.Range.Paste
        cc.Range.InlineShapes(1).scaleHeight = scaleHeight
        cc.Range.InlineShapes(1).scaleWidth = scaleWidth
    ElseIf ...
Next cc
End With

создание этих отчетов с помощью Office 2007 дало файлы, которые были около 6 МБ, но создание их (с использованием того же листа и документа) в Office 2010 дает файл, который примерно в 10 раз больше.

после распаковки docx, я установлено, что дополнительный размер поступает из файлов emf, которые соответствуют диаграммам, вставленным с помощью VBA. Где они колебаются от 360 до 900 KB раньше, они 5-18 MB. И графика не заметно лучше.

еще больше, похоже, это связано со стилем диаграммы. Я создал новую электронную таблицу и вставил 7 точек данных и соответствующую 2D-круговую диаграмму. Со стилем по умолчанию он скопирован как 79 КБ emf, а со стилем 26 он копирует как 10 МБ emf. Когда я использовал Office 2007, диаграмма будет копировать как 700 КБ emf. Это код:

Sub CopyAndPaste()
    ThisWorkbook.Worksheets("Charts").ChartObjects("Chart 1").CopyPicture Appearance:=xlScreen, Format:=xlPicture
    GetObject(, Class:="Word.Application").ActiveDocument.Range.Paste
End Sub

Я могу копировать с форматом xlBitmap, и хотя это несколько меньше, он больше, чем emf, генерируемый Office 2007 и заметно более низкого качества. Есть ли другие варианты уменьшения размера файла? В идеале я хотел бы создать файл с тем же разрешением для диаграмм, что и в Office 2007. Есть ли способ использовать только VBA (без изменения диаграмм в электронной таблице)? В любом случае я могу легко скопировать как объект, не связывая документы?

3 ответов



Я уже сталкивался с чем-то подобным раньше

вместо

Document.Range.Paste

Попробуйте Использовать

Document.Range.PasteSpecial DataType:= wdPasteMetafilePicture

или

Document.Range.PasteSpecial DataType:= wdPasteShape

это вставит диаграмму как изображение или рисунок в отличие от встроенного объекта excel

Equivelant для использования " вставить специальный..."из меню.

другие типы данных доступно

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


Это, возможно, происходит потому .файлы emf масштабируются неправильно. Использование PNG может решить проблему размера (как указано в комментариях выше), но все равно будет проблемой, потому что они не будут векторными изображениями.

Если вы используете AddPicture для добавления изображений в файл, на следующей странице показано решение, в котором вы можете изменить масштаб и уменьшить размер файла от любого используемого по умолчанию. Так что это может решить вашу вопрос.

http://social.msdn.microsoft.com/Forums/en-US/f1c9c753-77fd-4c17-9ca8-02908debca5d/emf-file-added-using-the-addpicture-method-looks-bigger-in-excel-20072010-vs-excel-2003?forum=exceldev