无法使用vba将Windows图像文件夹中的图像加载到Excel文件中

我有一个VBAmacros来添加一个图像到Excel文件。 添加文件的主要代码是…

Dim s As Shape Set s = Application.ActiveSheet.Shapes.AddPicture(strFilename, msoFalse, msoCTrue, lngLeft, lngTop, -1, -1) With s .Height = 60 .Locked = True End With 

lngLeft和lngTop是代码中较早设置的坐标。 目标图像文件是使用Application.FileDialog(msoFileDialogFilePicker)

strFilename填充使用下面的代码…

 Dim fd As FileDialog Dim objFile As Variant Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .ButtonName = "Select" .AllowMultiSelect = False .Title = "Choose a logo graphic ..." .Filters.Add "Images", "*.gif; *.jpg; *.png; *.jpeg", 1 .FilterIndex = 2 .InitialView = msoFileDialogViewDetails .Show For Each objFile In .SelectedItems strFilename = Dir(objFile, vbNormal) Next objFile 

问题:在我的系统和我的同事以及另一个随机系统上,一切都完美运行。 但是,当我们的客户使用它时,他无法从Windows的“图片”文件夹中select图像。 他可以从任何其他文件夹中select它。 他得到“运行时错误”1004“:指定的文件未find。”

开发和testing中使用的所有系统都是Windows 10,客户端使用的是Windows 7.同时,我们在使用Office 2016的同时使用了2010。

任何人都可以帮助什么可能是这个问题的原因和解决方法?

我find了一个解决方法,似乎做了这项工作。 问题在于这段代码

 For Each objFile In .SelectedItems strFilename = Dir(objFile, vbNormal) Next objFile 

当我添加一个消息框,我发现strFilename只有文件名(例如:myimage.jpg)没有完整的path。 这似乎不会影响其在Windows 10上的Office 2016的function。但由于某些原因,Windows 7或Office 2010无法使用它。 所以,我改变了文件path+文件名string的生成方式,它工作正常。

 strFilename = .SelectedItems(1)