当路径包含空格时,正确使用Shell函数

时间:2013-11-15 01:45:54

标签: vba excel-vba excel-2010 excel

我正在尝试使用Shell功能从Excel-VBA打开图像。 第一行代码可以工作,但我不希望它在Paint中打开。我希望它在Windows Live Photo Gallery中打开,因为第二行代码建议,但这行不起作用。谁能告诉我这是什么问题?

Shell("mspaint.exe C:\test\Data_Sample\Figures\" & ActiveCell.Value & ".jpeg")
Shell ("WLXPhotoGallery.exe C:\test\Data_Sample\Figures\" & ActiveCell.Value & ".jpeg")

修改 正如BK201建议的那样,我尝试编写WLXPhotoGallery可执行文件的完整路径;虽然这确实打开了Windows Live Photo Gallery,但它无法打开我需要的图像。为什么呢?

PGallery = "C:\Program Files (x86)\Windows Live\Photo Gallery\WLXPhotoGallery.exe"
Pic = "C:\test\Data_Sample\Figures\" & ActiveCell.Value & ".jpg"
Shell (PGallery & " " & Pic)

2 个答案:

答案 0 :(得分:0)

尝试使用Windows Live照片库的完整路径。这是因为mspaint.exe可以在system32中找到,这就是为什么可以在没有写出路径的情况下调用它。 WLXPG不是这种情况。

Sub OpenPic()

PGallery = "C:\Program Files\Windows Live\Photo Gallery\WLXPhotoGallery\WLXPhotoGallery.exe"
Pic = 'insert path here of picture/photo
Shell (PGallery & " " & Pic)

End Sub

这是未经测试的,因此请根据需要进行修改。

答案 1 :(得分:0)

问题可能是您缺少"引号。用"引号括起你的路径,否则Windows可能无法正确解释包含空格的路径。因为它们在字符串中,所以你实际上必须写这样的引号""。结果:

PGallery = """C:\Program Files (x86)\Windows Live\Photo Gallery\WLXPhotoGallery.exe"""
Pic = """C:\test\Data_Sample\Figures\" & ActiveCell.Value & ".jpg"""
Shell (PGallery & " " & Pic)