LoadPicture的路径/文件访问错误,似乎是基于路径长度

时间:2019-08-09 09:40:08

标签: vba powerpoint

我有一个用户表单,可让用户选择要插入的模板幻灯片。当他们选择幻灯片时,将使用LoadPicture显示预览图像。 我们使用的是OneDrive同步文件夹,因此每个人都有相同的幻灯片。

某些人在某些幻灯片上出现错误,这似乎是基于文件路径的长度。对我来说,任何超过126个字符的文件名都给出错误。其他同事的路径更长,但是没有出错。

图像文件全部存在,我找不到其他区别。关于为什么发生这种情况以及如何解决这个问题的任何线索?

Example of the error. The first selected slide works, the second does not

相应的调试行:

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

1 个答案:

答案 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