我正在使用VBA将图像从Web下载到我的本地计算机,然后将该图像移动到服务器。此外,我将该图像压缩为缩略图大小并将该文件移动到服务器。
在这两种情况下,当我尝试将文件移动到服务器时,我收到以下错误:
我尝试使用以下代码等待文件存在以移动它:
Do While Dir(sLocalFile & ".jpg") = ""
DoEvents
Loop
但我仍然收到错误消息。
此外,如果我点击" Debug"按钮并立即点击"继续"按下F5,宏完成执行没有问题,表明即使Dir
表示文件存在,它也没有准备好被移动(即可能仍然被写入)。因此,我尝试使用以下代码继续尝试移动文件,直到它可以这样做而没有错误:
MoveFile:
On Error GoTo MoveFile
Name sLocalFile & ".jpg" As ServPath & PartNum & ".jpg"
On Error GoTo 0
但是,我仍然遇到同样的错误(我也试过切换标签和On Error
命令,但这并没有改变任何东西)。
修改:以下是我用来下载文件的功能:
Function DownloadFile(sSourceURL As String, _
sLocalFile As String _
) As Boolean
DownloadFile = URLDownloadToFile(0&, _
sSourceURL, _
sLocalFile, _
BINDF_GETNEWESTVERSION, _
0& _
) = ERROR_SUCCESS
End Function
我在网上找到了它,并且只对它正在做的事情有了基本的了解。
编辑2:我应该补充一点,这个宏是在SolidWorks内部运行的,如果没有在线可用对象的图像,我就会生成图像使用以下代码使用SolidWorks:
Dim sUrl As String, sLocalFile As String
sUrl = UserFormImportPart.TextBoxImgURL
sLocalFile = "C:\temp\" & UserFormImportPart.TextBoxPartNum
If sUrl = "" Then
With swApp
.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swExportJpegCompression, 100
.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffScreenOrPrintCapture, 1
.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintDPI, 400
End With
With swModel
.ShowNamedView2 "*Isometric", 7
.ViewZoomtofit2
.Extension.InsertScene "\scenes\01 basic scenes\11 white kitchen.p2s"
.SaveAs3 sLocalFile & ".jpg", 0, 0
.Extension.InsertScene "\scenes\01 basic scenes\00 3 point faded.p2s"
If Len(Dir(sLocalFile)) > 0 Then
Kill sLocalFile
End If
Name sLocalFile & ".jpg" As sLocalFile
End With
Else
DownloadFile sUrl, sLocalFile
End If
当我下载文件以及使用SolidWorks生成文件时,都会发生错误。
答案 0 :(得分:0)
基于@ NeepNeepNeep的评论,我能够提出这个似乎运作得相当好的事情:
Do While Dir(sLocalFile & ".jpg") = ""
DoEvents
Loop
Sleep 10
NewLen = 1
Do While NewLen > OldLen
OldLen = NewLen
NewLen = FileLen(sLocalFile & ".jpg")
If NewLen < OldLen Then
NewLen = OldLen + 1
End If
Loop
OldLen = 0
Name sLocalFile & ".jpg" As ServPath & PartNum & ".jpg"