我有一个非常旧的VBA文件,由其他人用有限的评论来创建,以解释它。该文件是一个训练文件,询问名称,然后提供您可以查看以训练的文件名。变量从5个不同的子程序传递。
RetVal = Shell("C:\Program Files\Microsoft Office\OFFICE11\PPTVIEW.EXE " & ProgFile, 1)
这是从Excel打开PowerPoint 4.0文件的行。 ProgFile
是传递的变量。
我的问题:如果我将文件放在C:\
驱动器上的目录中(说C:\Training\Forklift.ppt
),文件打开正常,程序会按预期执行。
但是:将相同的PPT文件放在我的网络驱动器(S:\Training\Forklift.ppt
)上我收到三条错误消息,因为弹出窗口没有编码到程序中(我怀疑是系统错误)。 (路径名称已更改为显示为S:\
RECORDS
Safety
Forklift.ppt
RECORDS
和Safety
不是任何子例程使用的文件。是因为Shell
功能打开PowerPoint还是其他一些我忽略的神秘事物?
我正在尝试重写子例程,这是给我提出问题的未更改代码的一部分。
答案 0 :(得分:1)
我的猜测是RECORDS
和Safety
都是某种在Forklift.ppt
演示文稿中链接的外部文件。当事情发生变化时,PowerPoint因打破演示文稿而臭名昭着。如果PPT中有任何链接,则需要更新它们以指向S:
驱动器上的新位置。
您可以通过为其编写一些VBA代码来自动更改链接,但如果这是一次性移动,则可能不值得 - 只需手动重做即可。
答案 1 :(得分:1)
尝试用引号括起你的arg:
RetVal = Shell("C:\Program Files\Microsoft Office\OFFICE11\PPTVIEW.EXE " & Chr(34) & ProgFile & Chr(34), 1)