Compatibilidad entre Macros de 32 y 64 Bits
En varios foros es una pregunta común, como hacer compatibles macros en office de 32 y 64 bits, en este post muestro como se puede hacer en forma fácil que las macros sean compatible en Office tanto de 32 como de 64 bits.
Aprende a manejar Excel en forma eficaz, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.
Mira el funcionamiento de la macro y una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.
Código que permite compatibilizar versiones de 32 y 64 bits de Office
El código es un poco complicado de explicar hasta innecesario creo, solo basta decir que lo que se hace es detectar si se esta usando Office de 32 bits usa unas variables y si se está usando Office de 64 bits usa otras variables compatibles con esta versión.
Básicamente la diferencia está en la declaración de variables una por ejemplo, es la variable tipo «long», en 64 bits la variable es «LongPtr» y en 32 bits es «Long».
Si se copia y pega el código que tiene el libro de ejemplo en un módulo prácticamente está asegurada la compatibilidad entre las versiones de Office de 32 y 64 bits, ya que incluye la mayoría de las variables que generan problemas de incompatibilidad.
Si se desea saber más sobre el tema de compatibilidad les dejo un link a la ayuda de Microsoft donde explica sobre la compatibilidad de entre las versiones de 32 y 64 bits de Office.
Descarga del archivo ejemplo llamado como hacer compatibles macros en Office de 32 y 64 bits
Descarga el Libro de Excel con el código completo que te ayudará a compatibilizar macros entre 32 y 64 bits desde el final del post, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.
Código del ejemplo Como Hacer Compatibles Macros de Excel en Office de 32 bits y 64 bits
Código que se ingresa en módulo
#If VBA7 And Win64 Then
‘Si es de 64 bits
Public Declare PtrSafe Function ShellExecute Lib «shell32.dll» Alias «ShellExecuteA» (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
Public Declare PtrSafe Function FindWindow Lib «USER32» Alias «FindWindowA» (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Public Declare PtrSafe Function GetWindowLongPtr Lib «USER32» Alias «GetWindowLongPtrA» (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
Public Declare PtrSafe Function SetWindowLongPtr Lib «USER32» Alias «SetWindowLongPtrA» (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
Public Declare PtrSafe Function DrawMenuBar Lib «USER32» (ByVal hwnd As Long) As LongPtr
Public Declare PtrSafe Function RegOpenKeyA Lib «advapire32.dll» (ByVal hKey As LongPtr, ByVal lpSubKey As String, phkResult As LongPtr) As LongPtr
#Else
‘Si es de 32 bits
Public Declare Function ShellExecute Lib «shell32.dll» Alias «ShellExecuteA» (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Function FindWindow Lib «USER32» Alias «FindWindowA» (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLong Lib «USER32» Alias «GetWindowLongA» (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib «USER32» Alias «SetWindowLongA» (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function DrawMenuBar Lib «USER32» (ByVal hwnd As Long) As Long
Public Declare Function RegOpenKeyA Lib «advapire32.dll» (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
#End If
Sub muestramsgbox()
MsgBox («Agregando estos códigos las macros se ejecutan indistintamente en Excel con 32 o 64 bits»), vbInformation, «AVISO»
End Sub
Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407