Cambiar Macro de 32 bits para 64 bits

Tengo una macro que me funciona excelente en excel de 32 bits y pero instale excel de 64 bits pero resulta que ya no me funciona me sale un error y no se que hacer necesito de su ayuda ya que no soy un programador solo un aficionado porque utilizo macros en algunos de mis trabajos. Les adjunto el error y la macro:

Private Type BROWSEINFO ' utilizado por la función GetFolderName
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type

' (aqui se biene el error)
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetFolderName(Msg As String) As String
' devuelve el nombre de la carpeta seleccionada por el usuario
Dim bInfo As BROWSEINFO, path As String, r As Long
Dim X As Long, pos As Integer
    bInfo.pidlRoot = 0& ' Carpeta raíz = escritorio
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Seleccione una Carpeta"
        ' el título de diálogo
    Else
        bInfo.lpszTitle = "¿En que carpeta desea guardar el Archivo a generar?" ' el título de diálogo
    End If
    bInfo.ulFlags = &H1 ' Tipo de directorio para volver
    X = SHBrowseForFolder(bInfo) ' visualizar el diálogo
    ' Analizar el resultado
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal X, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetFolderName = Left(path, pos - 1)
    Else
        GetFolderName = ""
    End If
End Function
Sub TestGetFolderName8_1()
Dim FolderName As String
    FolderName = GetFolderName("Select a folder")
    If FolderName = "" Then
        MsgBox "Se Seleccionará la unidad D:", vbCritical, "Seleccione una carpeta"
       Hoja3.TextBox1.Value = "D:"
    Else
     Hoja3.TextBox1.Value = FolderName
    End If
End Sub

O si tubieran otras soluciones a mi macro que busca en donde guardar un archivo.

1 respuesta

Respuesta
1

·

·

Por lo que he leído haz esto:

Private Declare PtrsSafe Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As LongLong
Private Declare PtrSafe Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As LongLong

Este es el enlace:

https://msdn.microsoft.com/es-es/library/office/gg278832.aspx 

Y eso es todo, espero que te sirva.

:

;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas