es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo abrir un libro de trabajo con la ruta del archivo?

Estoy teniendo problemas con Workbooks(). En el código siguiente, quiero que el usuario elija el archivo y obtenga la ruta del archivo del cuadro de diálogo. Todos estos pasos están funcionando. Sin embargo, tengo problemas con el uso de pathKeys. Parece que cuando escribo Workbooks(pathKeys), tengo un error 9 (Error de script fuera de rango).

Sub getData()
    Dim diagBoxkeys As FileDialog
    Dim pathKeys As String

    Set diagBoxkeys = Application.FileDialog(msoFileDialogFilePicker)
    diagBoxkeys.Title = "Archivo de claves " & FileType
    diagBoxkeys.Filters.Clear
    diagBoxkeys.Show
    If diagBoxkeys.SelectedItems.Count = 1 Then
        pathKeys = diagBoxkeys.SelectedItems(1)
    End If

    MsgBox (pathKeys)
    Dim wbKeys As Workbook
    ScreenUpdating = False

    Set wbKeys = GetObject(pathKeys)
    Workbooks(pathKeys).Worksheets(1).Columns(2).Copy Destination:=Workbooks("Macro_PORTAL_APRR.xlsm").Worksheets(1).Columns(1)  
    wbKeys.Close Savechanges:=False
End Sub

Sin embargo, cuando en este código reemplazo <code>Workbooks(pathKeys)</code> con <code>Workbooks("Keys_2021-12-27_13_43_21_utf-8.csv")</code>, funciona perfectamente.

No entiendo por qué pathKeys no es aceptado como pathKeys = C:\Users\tn5809\Documents\PROJETS\PORTAL_APRR\Keys_2021-12-27_13_43_21_utf-8.csv.

¿Qué estoy haciendo mal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en el uso de la variable pathKeys al referirse al libro de trabajo. Al escribir Workbooks(pathKeys), intenta hacer referencia al libro de trabajo con el nombre coincidente con la cadena en pathKeys, el cual puede no existir. En su lugar, intente usar la variable wbKeys, que ya contiene la referencia al libro de trabajo abierto. Por lo tanto, reemplace Workbooks(pathKeys) con wbKeys en el código como se muestra a continuación:

    Sub obtenerDatos()
    
        Dim diagBoxkeys As FileDialog
        Dim pathKeys As String
    
        Set diagBoxkeys = Application.FileDialog(msoFileDialogFilePicker)
        diagBoxkeys.Title = "Archivo de claves " & FileType
        diagBoxkeys.Filters.Clear
        diagBoxkeys.Show
        If diagBoxkeys.SelectedItems.Count = 1 Then
            pathKeys = diagBoxkeys.SelectedItems(1)
        End If
    
        MsgBox (pathKeys)
        Dim wbKeys As Workbook
        Application.ScreenUpdating = False
    
        Set wbKeys = GetObject(pathKeys)
        wbKeys.Worksheets(1).Columns(2).Copy Destination:=Workbooks("Macro_PORTAL_APRR.xlsm").Worksheets(1).Columns(1)  
        wbKeys.Close Savechanges:=False
    
    End Sub
    

    Esto debería resolver el error y permitir que el código funcione como se pretende.

Comments are closed.