usar sistemas showwindow ptrsafe proyecto para macro lib hacer este ejemplos debe código convertir con compatibles application and actualizar vba timer outlook outlook-vba outlook-2010

sistemas - Outlook VBA: ejecuta un código cada media hora con Outlook 2010 64 bits



private declare function showwindow lib user32 64 bit (1)

PtrSafe no está corrigiendo el código, simplemente indica que se puede PtrSafe el siguiente declare desde el código de 64 bits.

El puntero devuelto por AddressOf se prototipa como ByVal lpTimerfunc As Long que es de 32 bits; es decir, demasiado pequeño para acomodar una dirección de 64 bits. Lo mismo es cierto de hwnd .

Usa el tipo de LongPtr para lidiar con esto.

Esta pregunta está hecha (y resuelta) antes, vea Outlook VBA - Ejecuta un código cada media hora Utilicé el código durante varios años sin problemas en varias computadoras con Vista (32 bit), Windows 7 y Windows 8.1 (todas 64 poco). Una nueva computadora con una nueva instalación de Office 2010 presenta algunos problemas.

La versión de 64 bits de Outlook parece reaccionar de forma diferente a la versión de 32 bits. Tengo errores con estas líneas

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

Esto se puede corregir con PtrSafe como:

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

Otro error aparece en la línea:

TimerID = SetTimer(0, 0, nMinutes, AddressOf TriggerTimer)

Los tipos parecen ser diferentes.