gpt4 book ai didi

VBA 等待文件下载完毕

转载 作者:行者123 更新时间:2023-12-03 01:29:33 25 4
gpt4 key购买 nike

我正在使用 VBA 将图像从网络下载到本地计算机,然后将该图像移动到服务器。此外,我将该图像压缩为缩略图大小,并将该文件也移动到服务器。

在这两种情况下,当我尝试将文件移动到服务器时,都会收到以下错误:

Run-time error '75': Path/File access error

我尝试使用以下代码等待文件存在后再移动它:

Do While Dir(sLocalFile & ".jpg") = ""
DoEvents
Loop

但我仍然收到错误消息。

另外,如果我点击“调试”按钮,然后立即点击按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 生成文件时都会发生该错误。

最佳答案

根据@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"

关于VBA 等待文件下载完毕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com