【问题标题】:Kernel32 issue with MS Access 2010 on Windows Server 2003 32-bitWindows Server 2003 32 位上的 MS Access 2010 的 Kernel32 问题
【发布时间】:2013-03-26 04:47:59
【问题描述】:

您好,我最近在我的 Windows Server 2003 32 位上安装了 MS Access 2010。从那以后,我的一个 VBA 脚本运行不正常。 MS Access 意外退出,导致 Kernel32 模块出现此错误。

我在我的 VBA 代码中使用了这一行。

Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
         lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
         lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
         ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
         ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
         lpStartupInfo As STARTUPINFO, lpProcessInformation As _
         PROCESS_INFORMATION) As Long

以前我用的是 MS Access 2003 版本,我从来没有遇到过任何问题。 MS Access 2010-Windows Server 2003-Kernel32 是否存在兼容性问题。请帮忙。谢谢

【问题讨论】:

  • 你能把你的完整声明和你用作参数的类型一起展示吗?
  • @Mike - 我已经包含了完整的声明。
  • @GopalSAkshintala 你怎么称呼这个函数?

标签: vba ms-access ms-access-2010 ms-access-2003 kernel32


【解决方案1】:

虽然我无法就您遇到的 kernel32 问题提供任何具体指导,但我建议您开始从代码中消除 32 位 Windows API 调用。此类调用将阻止您的代码在 64 位版本的 Access 下编译,除非您调整声明以使其“指针安全”(参考:here),并且在许多更常见的情况下使用 Win32 API 调用在那里现在有更通用的方法可用,例如用于操作“文件打开”和“文件保存”对话框的 FileDialog 对象。

在这种情况下,我将调查WScript.Shell 对象的.Exec.Run 方法。有这些方法的描述(以及它们之间的区别)here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多