1

您好我最近在我的 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 是否存在兼容性问题。请帮忙。谢谢

4

1 回答 1

1

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

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

于 2013-04-20T10:01:28.353 回答