Ошибка LoadPicture неверная картинка
Я пытаюсь взять изображение из папки, чтобы проверить его ширину после этого. Для этого я использую следующий код:
Dim pic As IPictureDisp
Dim var As Variant
var = "C:\Myfolder\Animage" & animationNum + 1 & ".png"
pic = LoadPicture(var)
Это дает мне ошибку "недопустимая картинка". Я пробовал также просто используя следующую строку:
width = LoadPicture("C:\Myfolder\Animage" & animationNum + 1 & ".png").width
Но это также дало мне ту же ошибку. Как я могу загрузить картинку?
РЕДАКТИРОВАТЬ
Я пытаюсь с изображением JPG, и он работает... Есть ли у этой функции некоторые проблемы с файлами PNG?
4 ответа
Графические форматы, распознаваемые Visual Basic, включают файлы растровых изображений (.bmp), файлы значков (.ico), файлы курсоров (.cur), файлы кодированных по длине серий (.rle), файлы метафайлов (.wmf), расширенные метафайлы (.emf).), Файлы GIF (.gif) и файлы JPEG (.jpg).
.png не поддерживается.
Я искал именно эту проблему и нашел решение на другом сайте, поэтому я решил поделиться им здесь.
Я не придумал этот код, это от Экспертов Exchange здесь: http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Excel/Q_26980514.html
Если вы импортируете .bas
файл, который вы можете использовать LoadPictureGDI()
на месте LoadPicture()
который преобразует изображение перед загрузкой в вашу пользовательскую форму или лист.
Сегодня у меня была такая же проблема в Windows 10 Office 365.
В моем случае файл jpeg, который мне нужно было добавить в пользовательскую форму, был отправлен мне через команды Microsoft, и система безопасности Windows автоматически заблокировала его.
Я должен был проверить
unblock
флажок в прикрепленном изображении, а затем смог добавить его в пользовательскую форму.
Команда LoadPicture не любит имена файлов длиной более 35 символов при работе в более поздних версиях Office. Я могу загрузить изображение в пользовательскую форму в Windows 7 Office 2010, и, похоже, он обрабатывает любую длину имени файла, но после перехода на Windows 10 / Office 2013 и далее, если вы перейдете на длину в 35 символов, Err.Description просто скажет: " Ошибка пути / доступа ".
Ограничьте имя файла до 35 символов, и все будет в порядке.