使用shell解压缩zip文件出现自动化错误-2147024894 位置: ShellApp.Namespace(FileNameZip).CopyHere FileNames(i)

2017-09-17 08:00:00
zstmtony
原创
268

正常windows xp 与windows 7都自带 zip解压缩功能

但最近在客户某些电脑使用shell解压缩zip文件 在代码: ShellApp.Namespace(FileNameZip).CopyHere FileNames(i) 

出现自动化错误-2147024894  

-2147024894 

方法 'NameSpace' 作用于对象 'IShellDispatch4' 时失败

这段代码在win7下是非常正常的,但在XP下出现该错误

这是因为 zipfldr.dll不一定每个XP系统都存在,有的被优化掉了,有些克隆版的XP系统 为了节约资源,补删除掉了,去掉的方法如下:



WindowsXP系统自带解压缩文件的功能,不用安装压缩软件就可以解开ZIP格式的压缩文件。但是这一切功能会耗费系统大量的资源,所以可以将这个功能关闭。可以单击“开始”—“运行”命令,打开“运行”对话框,在输入框中输入“regsvr32 /u zipfldr.dll”(不含引号)命令输入的“regsvr32 /u zipfldr.dll”命令中,在“32”和“/”中间有一个空格,在“u”和“zipfldr.dll”中间有一个空格。
按回车键,会弹出功能关闭成功的提示框,就说明这个功能被成功的关闭了。“zipfldr.dll中的DLLUnregisterServer成功” 如果要恢复对ZIP压缩文件的支持,在“运行”对话框中输入“regsvr32zipfldr.dll”不含引号即可。


但这样就导致使用shell.application方法来调用windows自带的解压zip文件的功能就不能正常运行了。

出现这样的错误提示


有这个文件,并且注册过(注册成功),也同样自动化错误
位置: ShellApp.Namespace(FileNameZip).CopyHere FileNames(i)

提示:


EH的zhyzhsh 的解决办法如下:


本机观察并解决此问题的详细步骤如下:

1、Excel里运行该代码,提示以下错误:
 

2、Windows里运行命令“regsvr32 zipfldr.dll”,提示以下错误。意思是系统里找不到该文件。从http://www.zhaodll.com网站下载该文件,解压放到C:\WINDOWS\system32目录。
 

3、Windows里再次运行命令“regsvr32 zipfldr.dll”,提示成功。
 

4、退出并再次进入Excel,运行代码成功。(若不退出直接运行则仍提示步骤1所示错误)

声明:本方法仅供参考。如仍无法适用其他环境,请尝试替代方案或联系该代码原作者


按这种方法注册后,运行成功


但这样无法确保所有的系统都能够成功解压,最好还是使用winrar的调用解压方式,或调用zip.dll 或unzip.dll 这些方式

    分享