【VBA研究】Excel在64位系统安装目录造成的ORA-06413:连接未打开错误

作者:iamlaosong

我做的excel工具,连接oracle数据库查询数据,平时可以很好的运行,无论是XP和win7都可以。后来碰到一台win7(64位)的系统,发现无法连接数据库,报“ORA-06413: 连接未打开”错误。

错误描述: 用ORACLE的工具里的sqlplus可以连接,可是运行excel中的宏就是死活报“ORA-06413:连接未打开”错误 。如下图:

【VBA研究】Excel在64位系统安装目录造成的ORA-06413:连接未打开错误_第1张图片

 

查找原因和解决办法(不想看过程就直接看结论):

点击调试,出错语句是:

cnn.Open "Provider=msdaora;Data Source=dl580;User Id=emssxjk;Password=emssxjk;"

显然不是语句问题,在网上查了一下,判断可能是程序所在的目录有括号导致的,检查发现office软件的安装目录确实是在program file (x86)下,卸载重装,发现仍然安装在那个目录下,尽管当时选择路径时并没有(x86)。直接将路径中的(x86)去掉,结果运行时系统又自动重新安装一个带(x86)的。

我想是不是32位的软件安装后都要加一个(x86),试验发现并不是如此,只要安装目录不是program file,输入什么目录就是什么目录。再次卸载office,重新安装时不用program file目录,改成office目录,问题解决。

 

结论:安装office应用时不要使用默认的program file目录(文件夹),而是输入一个,随便叫什么名字都可以,比如office,其它安装过程一样。这样,应用就会安装在指定的目录中,比如C:\office。

同样,安装64位的office应用也可以解决问题。

 

==============================

program files与program files(x86)的区别

简单来说:Program Files (x86)存放了一些32位的系统文件。它和正常的Program Files以及Windows文件夹一样,都属于系统文件夹,请勿随意改动。 64位Windows中提供了一种技术,Windows on Windows 64(即WoW64)。它可以使32位的应用程序正常地运行在64位的Windows中,这样用户在从32位到64位过渡的过程中,不会感受到很大的不便。为了能让32位的程序正常运行,64位的Windows中自带了一大部分的32位的系统文件,当32位程序运行的时候,系统会给它虚拟出一个32位的环境,这样32位程序会以为自己运行在32位Windows中。Windows的系统文件主要是存放在%SystemDrive%\Program Files和%Windir%\System32中(即通常的C:\Program Files和C:\Windows\System32)。64位系统中,这两个文件夹存放的是64位的系统文件,为了存放32位的同名系统文件,64位系统中有另外两个文件夹与之对应,%SystemDrive%\Program Files (86)和%Windir%\SysWoW64(即通常的C:\Program Files (86)和C:\Windows\SysWoW64)。 
当32位程序需要访问Program Files或者System32中的文件时,系统会自动转向到Program Files (x86)或者SysWoW64中,这样32位的程序就可以正常的在64位Windows中运行了。类似的情况也发生在应用程序安装的时候,64位的程序一般都会被安装到Program Files中,而32位的程序则是装在Program Files (x86)中。 

你可能感兴趣的:(VBA_Excel,数据库应用)