Windows XP Excel VBA在Windows 7上崩溃

Windows XP Excel VBA在Windows 7上崩溃,vba,windows-7,excel-2007,windows-xp,msinet,Vba,Windows 7,Excel 2007,Windows Xp,Msinet,我正在尝试将Excel VBA宏从Windows XP切换到Windows 7。两个Windows版本都是32位操作系统。我的Windows 7版本是企业版 VBA代码在Windows XP上运行良好。当我试图在Windows7上运行代码时,它崩溃了,并且没有报告任何错误描述 我已注册了msinet.ocx,这似乎是Microsoft Internet Transfer Control 6.0所必需的。我还尝试通过添加额外的com组件tabctl32、comctl332/232/32和comdl

我正在尝试将Excel VBA宏从Windows XP切换到Windows 7。两个Windows版本都是32位操作系统。我的Windows 7版本是企业版

VBA代码在Windows XP上运行良好。当我试图在Windows7上运行代码时,它崩溃了,并且没有报告任何错误描述

我已注册了
msinet.ocx
,这似乎是Microsoft Internet Transfer Control 6.0所必需的。我还尝试通过添加额外的com组件
tabctl32
comctl332/232/32
comdlg32
来解决安全问题,所有这些组件都是ocx文件。但是,没有任何变化-我的代码在Windows 7上仍然失败


取消注册
msinet
后,Excel VBA将打开我的工作簿,报告缺少的引用
msinet
,并且根本不起作用。如何解决此问题?

尴尬。在宏安全性设置为“高”或“中”的Excel会话中打开工作表,并对有关在工作表中启用VBA宏的对话框回答“否”

如果它打开,您应该仍然能够查看该项目,如果您试图编译它,这可能会显示一个明显的缺少引用或错误

下一步:将工作簿另存为html并关闭Excel。清除临时文件夹,重新启动excel,打开html文件并将其保存回excel格式。如果幸运的话,所有遗留对象和引用都将被清除并替换为与新操作系统兼容的版本


这种方法有一半的时间有效。

很尴尬。在宏安全性设置为“高”或“中”的Excel会话中打开工作表,并对有关在工作表中启用VBA宏的对话框回答“否”

如果它打开,您应该仍然能够查看该项目,如果您试图编译它,这可能会显示一个明显的缺少引用或错误

下一步:将工作簿另存为html并关闭Excel。清除临时文件夹,重新启动excel,打开html文件并将其保存回excel格式。如果幸运的话,所有遗留对象和引用都将被清除并替换为与新操作系统兼容的版本


这在大约一半的时间内都有效。

没有注册msinet.ocx时系统没有崩溃并不意味着这就是问题所在

如果您在
ThisWorkbook
模块内部的任何过程中调用了该库(msinet.ocx),或者从该模块调用了该库,并且您未注册该库,那么当文件打开并尝试运行On open宏时,该模块将不会编译,因此不会运行导致其崩溃的代码行。(我只是猜测这可能是你的情况。)

试着找出到底是哪个电话使你的系统崩溃

  • 让msinet.ocx注册
  • 在不激活宏的情况下打开文件
  • 然后手动逐步(F8)运行文件的打开代码(
    专用子工作簿_Open()
  • 最终,您将获得导致系统崩溃的确切代码行。有了这些信息,你就能得到更多的帮助

    注:

    要在不激活宏的情况下打开文件,可以使用以下方法之一:

    • 双击文件以打开文件后(从windows资源管理器)按住Shift键。要使此方法起作用,必须关闭Excel应用程序

    • 如果Excel应用程序已打开,则转到VB编辑器,在即时窗口中键入
      application.EnableEvents=False
      (然后按enter键运行它)。请注意,这将禁用该Excel实例中每个文件上的事件。您必须将其设置回true或关闭应用程序(而不仅仅是文件)


      • 未注册msinet.ocx时系统未崩溃并不意味着这就是问题所在

        如果您在
        ThisWorkbook
        模块内部的任何过程中调用了该库(msinet.ocx),或者从该模块调用了该库,并且您未注册该库,那么当文件打开并尝试运行On open宏时,该模块将不会编译,因此不会运行导致其崩溃的代码行。(我只是猜测这可能是你的情况。)

        试着找出到底是哪个电话使你的系统崩溃

      • 让msinet.ocx注册
      • 在不激活宏的情况下打开文件
      • 然后手动逐步(F8)运行文件的打开代码(
        专用子工作簿_Open()
      • 最终,您将获得导致系统崩溃的确切代码行。有了这些信息,你就能得到更多的帮助

        注:

        要在不激活宏的情况下打开文件,可以使用以下方法之一:

        • 双击文件以打开文件后(从windows资源管理器)按住Shift键。要使此方法起作用,必须关闭Excel应用程序

        • 如果Excel应用程序已打开,则转到VB编辑器,在即时窗口中键入
          application.EnableEvents=False
          (然后按enter键运行它)。请注意,这将禁用该Excel实例中每个文件上的事件。您必须将其设置回true或关闭应用程序(而不仅仅是文件)


        检查是否没有对缺失库的引用,如果没有,只需取消选中即可。我遇到了一个类似的问题,这对我的情况很有帮助。

        检查您是否没有对缺少的库的引用,如果没有,只需取消选中即可。我也遇到了类似的问题,这对我的情况很有帮助。

        您是否尝试在windows 7计算机上编译代码?是的,我尝试过。但缺少参考,无法修复。我想知道Win7/xp VBA代码中是否存在一些兼容性问题。它是在打开工作簿时崩溃还是在执行某些过程时崩溃?您是否检查了任何API调用的语法/参数更改?问题是打开workb