我有一个用户表单,可让用户选择要插入的模板幻灯片。当他们选择幻灯片时,将使用LoadPicture显示预览图像。 我们使用的是OneDrive同步文件夹,因此每个人都有相同的幻灯片。
某些人在某些幻灯片上出现错误,这似乎是基于文件路径的长度。对我来说,任何超过126个字符的文件名都给出错误。其他同事的路径更长,但是没有出错。
图像文件全部存在,我找不到其他区别。关于为什么发生这种情况以及如何解决这个问题的任何线索?
相应的调试行:
126 - C:\<redacted>\Business - AMG - Templates\01. Powerpoint\images\img_4-IP-ffp\Business activities IT services.jpg
129 - C:\<redacted>\Business - AMG - Templates\01. Powerpoint\images\img_4-IP-ffp\Business solution generieke aanpak.jpg
代码:
Private Sub lb_slides_Click()
On Error GoTo ErrorHandler
If lb_slides <> "" Then
Slide = strPath & strLocImage & strCatSlide & "\" & lb_slides.Column(1) & ".jpg"
Debug.Print Len(Slide) & " - " & Slide
tb_slide.Picture = LoadPicture(Slide)
selected_slide = lb_slides.Column(0)
End If
Exit Sub
ErrorHandler:
MsgBox err.Description & " " & err.HelpContext, vbInformation + vbOKOnly, "lb_slides"
End Sub
答案 0 :(得分:0)
尽管我无法重现该错误。但这可能有效。
让我知道它是否不起作用,我将删除答案。 ?
如果问题在于路径的长度,则可以使用ChDir
将工作目录更改为所有图像所在的文件夹,然后在代码后再次将其更改为旧文件夹。
通过这种方式,您不必将冗长的路径传递到LoadPicture
。
Private Sub lb_slides_Click()
Dim old As String
Dim nw As String
old = CurDir
On Error GoTo ErrorHandler
If lb_slides <> "" Then
nw = strPath & strLocImage & strCatSlide
ChDir nw
Slide = lb_slides.Column(1) & ".jpg"
Debug.Print Len(Slide) & " - " & Slide
tb_slide.Picture = LoadPicture(Slide)
selected_slide = lb_slides.Column(0)
ChDir old
End If
Exit Sub
ErrorHandler:
MsgBox Err.Description & " " & Err.HelpContext, vbInformation + vbOKOnly, "lb_slides"
End Sub