Como Anidar macros al abrir libro

Para Dante Amor

Buenas noches Dante Amor,

Tu me has generado una macro que me pregunta:
¿Qué libro quiere abrir?

Una vez abierto, genero otra macro que hace variaciones sobre ese libro abierto, pero ... En tiende que el libro se llama POR,

Cuando pongo en funcionamiento la macro, y digo que quiero abrir el libro Y, tu macro funciona, pero la mía NO, porque entiende que tiene que trabajar sobre el libro POR, no sobre el Y,

¿Cómo puedo hacer que mi macro entienda que tiene que trabajar sobre el libro que se abra?
Te mando las dos...

  1. Sub AbrirArchivo()
    'Por.Dante Amor
        Set h1 = ThisWorkbook
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Selecciona archivo de excel"
            .Filters.Add "xls.*", "*.xls*"
            .AllowMultiSelect = False
            .InitialFileName = ThisWorkbook.Path & "\"
            If .Show Then
                Set l2 = Workbooks.Open(.SelectedItems.Item(1))
            End If
        End With
    End Sub

    'empieza mi macro
    Application.DisplayAlerts = False
    '
    Windows.Arrange ArrangeStyle:=xlHorizontal
    Windows("informe.xls").Activate
    Columns("D:D").Select
    Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
1

1 respuesta

Respuesta
1

H o  l a:

Te anexo la macro actualizada. Cambia en la macro "hoja1" por el nombre de la hoja que vas a trabajar. Si no conoces el nombre de la hoja, pero sabes que siempre es la primera hoja, entonces cambia esta línea

Sheets("Hoja1").Select

Por esta línea:

Sheets(1).Select



Sub AbrirArchivo()
'Por.Dante Amor
    Set h1 = ThisWorkbook
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Selecciona archivo de excel"
        .Filters.Add "xls.*", "*.xls*"
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path & "\"
        If .Show Then
            Set l2 = Workbooks.Open(.SelectedItems.Item(1))
        End If
    End With
    'empieza mi macro
    Application.DisplayAlerts = False
    '
    'Windows.Arrange ArrangeStyle:=xlHorizontal
    l2.Activate
    Sheets("Hoja1").Select  'Poner el nombre de hoja a trabajar
    Columns("D:D").Select
    Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True
    'Aquí que continúe tu  macro
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas