我想通过VBA中的ImageMagick将从互联网[1]下载的图像转换为JPG。到目前为止,我已经尝试了两种都失败的方法。使用ImageMagick从VBA转换图像
首先,我尝试使用ImageMagickObject 1.0类型库:
Private Sub CommandButtonOkay_Click()
Dim sURL As String, sNetFile As String, sLocalFile As String, _
cmd As String, RetVal As Integer, img As Object
Set img = New ImageMagickObject.MagickImage
sURL = UserForm1.TextBoxImgURL
sLocalFile = "C:\temp\" & UserForm1.TextBoxName
DownloadFile sURL, sLocalFile ' Function to download image from a URL and save it to a local directory
RetVal = img.Convert(sLocalFile, sLocalFile & ".jpg") '<-- This line produces the error
UserForm1.Hide
End Sub
这最终让我有以下错误:
源文件(“C:\ TEMP \图像“)存在,但是要创建的文件(”C \ temp \ image.jpg“)没有。这与发布的here问题非常相似,但我至今尚未找到解决方案。
其次,我试过只调用ImageMagick的使用Shell
命令:
Private Sub CommandButtonOkay_Click()
Dim sURL As String, sNetFile As String, sLocalFile As String, _
cmd As String, RetVal As Integer
sURL = UserForm1.TextBoxImgURL
sLocalFile = "C:\temp\" & UserForm1.TextBoxName
DownloadFile sURL, sLocalFile ' Function to download image from a URL and save it to a local directory
RetVal = Shell("convert.exe """ & sLocalFile & """ """ & sLocalFile & ".jpg""")
UserForm1.Hide
End Sub
当我运行此,图像被下载就好了,但图像不转换,不会引发错误。此外,当我执行命令Shell
命令在单独的命令窗口中执行时,转换完全如我所料。
因此,这个问题似乎是为什么ImageMagick命令在它自己的命令提示符下运行时运行的很好,但是在VBA内运行时根本不工作?我不知道这是否是有用的信息,但我以编程方式从互联网上下载图像,所以我无法知道我得到什么格式;我不知道这是什么格式。不过,我用来测试这个图片的图片是PNG。
您是否尝试** convert.exe **的完整路径? – PatricK
是的。我做了,并没有改变结果。 – tlewis3348
'Shell(“cmd.exe/c”“”“”“”&sLocalFile&“”“”“”&sLocalFile&“.jpg”“”)'? –
PatricK