Es un poco complicado. Este tipo de programación solo está al alcance de los programadores expertos. Se usan las funciones que contienen las ficheros DLL lo que se llama la API de Windows. Hay miles de funciones en ella, pero ya te he dicho que es para un nivel bastante alto de programación. Pero de vez en cuando ves alguna página web donde se ha hecho uso de alguna de esas funciones. Yo conteste hace poco una pregunta que usaba una DLL, es esta:
Averiguar el nombre de usuario Windows
En esencia, para poder usar una función de estas en Excel, se tiene que crear una función Excel similar a la función que hay en la DLL. Y se tiene que declarar con una sentencia Declare (de tan poco que lo he usado me parecía que era Declares).
Esa declaración contiene parámetros enteros que van a actuar como punteros. Entonces el problema está en que en los sistemas de 32 bits loas punteros son de 32 bits y en los de 64 son de 64 y puede haber problemas en las direcciones de memoria. Para que una DLL de 32 funcione en un sistema de 64 se tienen que hacer algunos arreglos como poner la sentencia
Declare PtrSafe
Y usar el tipo LongPtr en lugar de Long en algún caso.
Entonces yo solo podría probar la macro que necesita un sistema de 64 y no la de 32, aunque a lo mejor conseguiría que te funcionara.
En esa macro aparecen las funciones GetWindowLong y SetWindowLong, las cuales estoy seguro que están en una DLL y para que todo funcione bien tienen que estar declaradas en algún módulo de Visual Basic, normalmente en las líneas primeras. Mira a ver si tienes esas sentencias Declare. Otra cosa intereseante es que dijeras la línea donde se produce el fallo, eso se sabe dandoa depurar cuando se produce.
Bueno, en el Google se puede encontrar de todo
Información de Microsoft
En efecto, son fuciones de la API que están en el fichero User32.DLL
Poco más puedo decirte, este es un tema que aun tengo mucho que aprender y tu fichero me habría venido bien para probar y aprender. No me lo podrías pasar por Dropbox o algo similar. Aunque no manejo yo muy bien cómo se puede hacer eso pero a mi me han pasado ficheros de esa forma el que sabía hacerlo.
Excelente! Estaba buscando este código ya que no había podido encontrar uno que se adaptara a 64b y este funciono a la perfección! - Erik Diaz
Esta perfecto el código. Me funciona en 64 bits, y se puede adecuar en caso de que solo se necesite el botón minimizar e inhabilitar el maximizar. - Paul Gutierrez