Cómo hacer para que una macro funcione en office de 32 y 64 bits?
En un Excel le he puesto una macro que me registrar la fecha y el usuario logeado de Windows en las celdas de las columnas S y T.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 2 Then
Cells(Target.Row, 19).Value = Now
Cells(Target.Row, 20).Value = ObtenerNombreUsuario()
End If
End Sub
Aclaro que la macro para obtener el usuario de Windows la he conseguido de un ejemplo publicado y la adapte a lo que necesito.
El problema que tengo es que el Excel lo tengo en una carpeta en red donde lo utilizan varios compañeros donde existen computadoras con office de 32 y 64 bits.
El siguiente código es el que me encontré, si pongo el PtrSafe me funciona en 64 bits y no en 32bits y si borro el PtrSafe me funciona en 32 y no en 64bits:
¿Existe alguna forma de que se pueda usar en ambas versiones?
Public Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Public Function ObtenerNombreUsuario() As String Dim rtn As Long Dim sBuffer As String Dim lSize As Long sBuffer = String$(260, Chr$(0)) lSize = Len(sBuffer) - 1 rtn = GetUserName(sBuffer, lSize) If rtn Then sBuffer = Left$(sBuffer, lSize) If InStr(sBuffer, Chr$(0)) Then sBuffer = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1) End If ObtenerNombreUsuario = sBuffer Else 'error! ObtenerNombreUsuario = "" End If End Function