原设计的32位系统下打开excel表格,到64位系统下就出错了,求高手帮忙指点,谢谢。

解决方案 »

  1.   

    系统问题吧。
    我前段时间写的一个程序,也会用到Excel表格:
      用Excel的COM对象操作表格,用来读取文件数据,或者创建表格输出数据、并保存到xls格式的文档中。在这些环境中都可以正常运行:
    1. Win7专业版32位 + 32位的Office 2007
    2. Win7旗舰版 64位 SP1 + 32位Office 2007
    3. Win10专业版 64位 + 64位Office 2010
    4. WinXP + Office 2003
      

  2.   

    VBA有没有引用的内容出现丢失的情况,若有删除重新引用
      

  3.   

    在64位Windows下:
    64位exe和dll在目录c:\windows\system32目录下;
    32位exe和dll在目录c:\windows\syswow64目录下;
    所以要注意:
        在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
        且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
        在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
        在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe
    64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html
    64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
      

  4.   

    编译的时候把“declare function”改成“declare ptrsafe function”?
    今天刚遇到这个问题,就是这么解决的。
      

  5.   

    报错内容?缺了什么ocx吗
      

  6.   

    楼主你好,如果楼主编写的程序中有API的引用,比如那种 declare function/sub之类的,在64位的环境下,要加SafePtr操作符,还有那些Long的变量,都要改成LongPtr,但是这些东西在32位的dll里面不能存在。
      

  7.   

    你说的“LongPtr”问题,是64位环境中调用32位API的“源码”才用到的。
    而楼主说的是“VB程序”,对于编译后的exe程序,无论是VB6的还是VB.NET的, 都是“不存在LongPtr问题的”。
    LongPtr 只存在于“源码”中…………