#excel #vba
#excel #vba
Вопрос:
добавление этого же вопроса на этот форум.
Следующее поведение началось несколько месяцев назад на некоторых компьютерах после обновлений Office / Excel. По крайней мере, затронуты версии Excel 2016 и 365.
Если вы вставляете изображение WMF в Excel, используя следующий макрос (-1 означает использование ширины и высоты изображений по умолчанию), изображение становится очень, очень большим. Если вы откроете изображение в любом другом приложении для обработки изображений, размер может быть как 11 см * 10 см, но в Excel он равен 800 см * 558 см. (Другие форматы изображений все еще работают, как ожидается)
Sub InsertPicture(picture As String)
Dim x As Integer
x = ActiveWindow.Zoom
ActiveWindow.Zoom = 100
Set p = ActiveSheet.Shapes.AddPicture(picture, False, True, Selection.Left, Selection.Top, -1, -1)
ActiveWindow.Zoom = x
Set p = Nothing
End Sub
Пример: установлен Office 2016 из ISO на пустую виртуальную машину — образы WMF работали. Установил все обновления office, после этого WMF не работал.
Похоже, что импорт изображения в Excel правильно вычисляет размер из заголовка метафайла, где DpiX и DpiY в одном примере составляют 8640, а высота — 25040, а ширина — 32760 -> размер в Excel — 661 см * 866 см
Комментарии:
1. попробуйте установить прямую ширину и высоту фигуры. сначала
dim p as shape
после добавления формыp.width= x
иshape.height = y
2. >> попробуйте напрямую установить ширину и высоту фигуры, мы используем разные размеры изображений в одной и той же позиции в Excel в зависимости от параметров производства в другом приложении. В настоящее время мы конвертируем WMF в PNG на лету перед вызовом VBA, но эта ошибка раздражает и влияет на наши старые версии приложений.
3. но вы можете добавить условие для установки масштаба изображения, например, если размер фигуры (ширина)> 2000, затем установите размер 600 и т.д. Вы можете выбрать множество вариантов размеров. Вы также можете попробовать установить pictureSizeMode 0,1,3 или создать функцию MaxWidth для проверки размера изображения после рисования и масштабирования изображения, если соблюдены некоторые условия.