Outlook VBA-使用Outlook 2010 64位,每半小时运行一次代码
此问题以前已完成(并已解决),请参阅 几年前,我在运行Vista(32位)、Windows7和Windows8.1(全部64位)的几台计算机上使用了这段代码,没有遇到任何问题。安装了新office 2010的新计算机会出现一些问题 64位版本的outlook的反应似乎与32位版本不同。 这些行有错误Outlook VBA-使用Outlook 2010 64位,每半小时运行一次代码,vba,timer,outlook,outlook-2010,Vba,Timer,Outlook,Outlook 2010,此问题以前已完成(并已解决),请参阅 几年前,我在运行Vista(32位)、Windows7和Windows8.1(全部64位)的几台计算机上使用了这段代码,没有遇到任何问题。安装了新office 2010的新计算机会出现一些问题 64位版本的outlook的反应似乎与32位版本不同。 这些行有错误 Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse A
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
这可以通过PtrSafe进行纠正,如:
Declare Function PtrSafe SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long
Declare Function PtrSafe KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
另一个错误出现在行中:
TimerID = SetTimer(0, 0, nMinutes, AddressOf TriggerTimer)
类型似乎有所不同
PtrSafe
并没有更正代码,它只是声明可以从64位代码调用以下声明
AddressOf
返回的指针原型为ByVal lpTimerfunc,长度为32位;i、 e.太小,无法容纳64位地址。这同样适用于hwnd
使用类型来处理此问题。hm<代码>地址
?如果您告诉我们错误消息和代码,这将有所帮助