Il ya déjà beaucoup de messages sur cette erreur, mais je n'arrive pas à trouver une solution; lors du chargement d'une image par programme (avec la fonction LoadPicture()
) à un contrôle d'image sur un userform je reçois cette erreur:Charger Erreur d'image pour JPEG
Run-time error 481 - Invalid picture
et similaire
Invalid picture
un message quand il est chargé manuellement. De mes recherches sur Internet, j'ai trouvé une foule de conseils sur cette erreur; la plupart des messages ont tendance à être parce que le user is uploading a png ou autre image invalide (such as a corrupt jpg), some suggest que mon dossier temp
est plein, others think un virus est la raison (je suis sceptique à propos de ce dernier).
Dans ma demande, ma photo est
Un jpg (qui MSDN lists as an acceptable format dans la section des remarques de leur
LoadPicture()
article)Non corrompu (au moins, je peux la voir avec des fenêtres PhotoViewer/Chrome/Peinture fine)
Relativement petit (comme dans, il est ~ 1MPx et un jpeg de 200MPx j'ai testé chargé sans aucune erreur)
La seule chose un peu inhabituel est que je télécharge ce à partir du Web directement en utilisant le code suivant:
Public Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long 'api to download files
Sub setPicTest()
Dim tmpImg As MSForms.Image 'create an image control on UserForm1 at runtime
Set tmpImg = UserForm1.Controls.Add("Forms.Image.1")
tmpImg.Picture = getImg("https://s-media-cache-ak0.pinimg.com/originals/22/e2/4d/22e24d3b5703a1c1cc43df5b13f53fd2.png")
End Sub
Function getImg(url As String) As IPictureDisp 'loads a picture from a url
Dim strFile As String 'file save location
strFile = Environ("Temp") & "\Temp.jpg" 'save *as jpeg* in %temp% folder
Debug.Print URLDownloadToFile(0, url, strFile, 0, 0) 'download file to temp folder
Set getImg = LoadPicture(strFile) 'load image -error-
Kill strFile 'clean up temp file
End Function
Alors que je travers, tout se passe comme prévu
- Un vide (aucune image) le contrôle d'image apparaît sur mon UserForm
- Un fichier appelé
temp.jpg
apparaît dans mon dossier temporaire- Ce fichier ne semble pas être corrompu
Mais les pauses d'exécution de code sur l'erreur. Ceci est particulièrement surprenant car le code fonctionne correctement pour les petites images miniatures, c'est juste que ces images en pleine résolution ne semblent pas fonctionner.
C'est un fichier png. Le renommer en jpg n'aidera pas :) –