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

时间:2016-01-28 12:27:20

标签: excel vba excel-vba

我有一个vba宏来将图像添加到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“图片”文件夹中选择图像。他可以从任何其他文件夹中选择它。他得到“运行时错误'1004':找不到指定的文件。”

开发和测试中使用的所有系统都是Windows 10,客户端使用的是Windows 7.此外,我们在使用Office 2010时使用的是Office 2016.

任何人都可以帮助解决此问题的原因和解决方法吗?

1 个答案:

答案 0 :(得分:0)

我找到了似乎可以完成这项工作的解决方法。问题在于这段代码

strFilename = .SelectedItems(1)

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

foreach