我个人从未使用过declare,特意跑去看了下这个参数的含义,是这么解释的:
带有 PtrSafe 关键字的 Declare 语句为建议的语法。要使包括 PtrSafe 的 Declare 语句能同时在 32 位和 64 位平台上的 VBA7 开发环境中正确运行,必须先将 Declare 语句中所有需要存储 64 位数的数据类型(参数和返回值)更新为使用 LongLong(对于 64 位整数)或 LongPtr(对于指针和句柄)。为确保与 VBA 版本 6 和更早版本的向后兼容性,请使用下面的构造:
#If Vba7 Then
Declare PtrSafe Sub...#
Else
Declare Sub...
#EndIf
我感觉PtrSafe就是为了防止在不同win版本中数据长度不一致而特别设置的,你就按照建议的要求做应该就ok了吧
带有 PtrSafe 关键字的 Declare 语句为建议的语法。要使包括 PtrSafe 的 Declare 语句能同时在 32 位和 64 位平台上的 VBA7 开发环境中正确运行,必须先将 Declare 语句中所有需要存储 64 位数的数据类型(参数和返回值)更新为使用 LongLong(对于 64 位整数)或 LongPtr(对于指针和句柄)。为确保与 VBA 版本 6 和更早版本的向后兼容性,请使用下面的构造:
#If Vba7 Then
Declare PtrSafe Sub...#
Else
Declare Sub...
#EndIf
我感觉PtrSafe就是为了防止在不同win版本中数据长度不一致而特别设置的,你就按照建议的要求做应该就ok了吧