2013-11-15 44 views
0

我试图使用Shell函数从Excel-VBA打开图像。 第一行代码有效,但我不希望它在Paint中打开。作为第二行代码建议,我希望它在Windows Live照片库中打开,但此行不起作用。谁能告诉我问题是什么?当路径包含空格时正确使用Shell函数

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照片库,但并未打开我需要的图像。为什么?

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

如果在Windows命令提示符下键入此命令,它是否工作? –

回答

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 

这是未经测试的,所以根据需要进行修改。

+0

我已将代码更改为我的电脑中的路径,虽然它打开了Windows Live照片库,但并未打开我需要的图像。 – user2837847

+0

尝试在Shell函数内声明整个路径的旧方法。我通常不使用Shell,因此我不知道是否可以将声明的字符串传递给它。基本上,请尝试:Shell(“C:\ Program Files ... C:\ test \ Data_Sample \ Figures \”&ActiveCell.Value&“.jpg”)'。 :) – Manhattan

+0

nope,它仍然不起作用... – user2837847

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)