Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 检查文件是否可以用程序无错误地打开_Vba_Ms Word - Fatal编程技术网

Vba 检查文件是否可以用程序无错误地打开

Vba 检查文件是否可以用程序无错误地打开,vba,ms-word,Vba,Ms Word,我正在尝试制作一个程序,在给它文件扩展名后用word打开文件。但显然不是所有的文件都能用word打开。所以我想知道如果word无法打开文件,是否有办法获得某种异常。任何想法都会有帮助。但是我用的是VB try { $a = ./test.docx #pdf file changed to .docx } catch { Write-Error "Error!" Exit } Write-Host "No Error!" 根据您上面的评论,我建议您查找ShellExecute WinAP

我正在尝试制作一个程序,在给它文件扩展名后用word打开文件。但显然不是所有的文件都能用word打开。所以我想知道如果word无法打开文件,是否有办法获得某种异常。任何想法都会有帮助。但是我用的是VB

try {
    $a = ./test.docx #pdf file changed to .docx
}
catch {
Write-Error "Error!" Exit
} Write-Host "No Error!"

根据您上面的评论,我建议您查找ShellExecute WinAPI调用

如果您将文件(完整路径、名称、扩展名)传递给ShellExecute,Windows将确定注册了哪个应用程序来打开该文件,并为您调用它。换句话说,如果在c:\some\u dir\myfile.docx上调用ShellExecute,它将在Word中打开该文件,或者返回一个指示有错误的值

在我的PPT常见问题解答网站上有一个例子,以及Randy Birch卓越网站上更多信息的链接:


首先,发布您已经编写的代码。如果你知道Word的EXE的路径,你可以用文件的路径拼凑出来,并将其传递给SHELL;SHELL在失败时返回0。我在PS:
try{$a=./test.docx#pdf文件更改为.docx}catch{Write Error“Error!”Exit}Write Host“No Error!”
它没有返回错误,我猜是因为它没有捕获终止错误。所以我只是想找出一种方法来捕捉word中的错误。我很困惑。你提到你正在使用VB,并且用VBA标记了这个问题,但是你的代码也不是。是的,对不起,这是因为我没有关于这个问题的任何代码。这就是问题所在。除了做一个不起作用的试捕之外,我不知道该怎么做。所以我愿意接受任何语言的建议。你知道这些文件的实际内容吗(例如,它们真的是Word、RTF、TXT等文件)?如果是这样的话,那么获得Word可以打开的文件类型列表,然后在命令行上使用文件名启动Word、shell执行文件或其他任何操作都将非常简单。如果您不知道文件的内容,那么随意添加扩展名有点奇怪,除非您一直在尝试每个扩展名单词都能理解,希望找到一个真正有效的扩展名。在这种情况下,您需要自动化Word,调用其文件打开方法并捕获发生的任何错误。太棒了!正如我所寻找的,我只需要得到返回值,然后设置。非常感谢你的帮助!