Macro que no funciona dentro de un conjunto de macros

Acudo nuevamente a Uds. Para plantearles esta situacion:

Tengo una macro (Sub RC2001()) que cuando la ejecuto individualmente, en un modulo donde solo esta ella funciona; pero si la inserto dentro de un modulo donde están otras, da error. Reproduzco el modulo completo, donde están todas las macros, la que da error es la "SubRC2001". Esta macro tiene como finalidad, seleccionar dos rangos de una hoja y copiarlos en otra hoja de un libro que no esta abierto, al ejecutarla copia el primer rango, pero falla al copiar el segundo. Nada de eso pasa si la ejecuto aislada, sin que haya otras macros en el modulo.

Este es el modulo completo:

Sub RC2001()
ficact = ActiveWorkbook.Name
Application.ScreenUpdating = False 'evitar que se vean los cambios de las ventanas
Application.DisplayAlerts = False 'evitar que se vean los anuncios al guardar
ruta = ActiveWorkbook.Path & "\" 'establecer la ruta de trabajo
Sheets("RC20").Select 'seleccionar la hoja que contiene el rango a copiar
Range("a23:a31").Select 'seleccionar el rango a copiar
Selection.Copy 'copiar
'abrir el libro que contiene la hoja donde se copiara el rango
Workbooks.Open Filename:=ruta & "Operaciones Contables.xlsm"
'seleccionar la hoja, el rango, ubicarse en la última fila vacia y copiar el contenido, con formato de solo valores
Sheets("Operaciones").Range("f65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("RC20").Select 'seleccionar la hoja que contiene el rango a copiar
Range("f23:f31").Select 'seleccionar el rango a copiar
Selection.Copy 'copiar
'seleccionar la hoja, el rango, ubicarse en la última fila vacia y copiar el contenido, con formato de solo valores
Sheets("Operaciones").Select 'seleccionar la hoja que contiene el rango donde se copiara
Sheets("Operaciones").Range("i65536").End(xlUp).Offset(1, 0).Select 'seleccionar el rango de la hoja que contiene el rango donde se copiara
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Save 'salvar el archivo
MsgBox "El Comprobante Ha Sido Registrado", vbYes, "Aplicacion Contable" 'mensaje
ActiveWindow.Close 'cerrar
Sheets("RC20").Select 'posicionar el puntero en la hoja de origen
ActiveSheet.Range("A1").Select 'posicionar el puntero en la la celda de la hoja de origen
Sheets("rc20").Select
Range("F13").Select
Range("F13").Value = Range("F13").Value + 1
Sheets("rc20").Select
End Sub

1 Respuesta

Respuesta
1

¿Cuál es el mensaje de error que te aparece y en qué línea de la macro se detiene?

Ya encontré el problema, la macro estaba intentando seleccionar una hoja, pero en libro2 "Sheets("RC20").Select", y como esa hoja no existe en el libro2, enviaba error.

Te anexo la macro actualizada para copiar los 2 rangos.

Sub RC2001()
'Act.Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("RC20")
    Application.ScreenUpdating = False 'evitar que se vean los cambios de las ventanas
    Application.DisplayAlerts = False 'evitar que se vean los anuncios al guardar
    ruta = l1.Path & "\" 'establecer la ruta de trabajo
    h1.Range("a23:a31").Copy 'copiar
    'abrir el libro que contiene la hoja donde se copiara el rango
    Workbooks.Open Filename:=ruta & "Operaciones Contables.xlsm"
    'seleccionar la hoja, el rango, ubicarse en la última fila vacia y copiar el contenido, con formato de solo valores
    Sheets("Operaciones").Range("f65536").End(xlUp).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    '
    h1.Range("f23:f31").Copy 'copiar
    'seleccionar la hoja, el rango, ubicarse en la última fila vacia y copiar el contenido, con formato de solo valores
    Sheets("Operaciones").Range("i65536").End(xlUp).Offset(1, 0).Select 'seleccionar el rango de la hoja que contiene el rango donde se copiara
    Selection.PasteSpecial Paste:=xlPasteValues
    ActiveWorkbook.Save 'salvar el archivo
    MsgBox "El Comprobante Ha Sido Registrado", vbYes, "Aplicacion Contable" 'mensaje
    ActiveWindow.Close 'cerrar
    Sheets("RC20").Select 'posicionar el puntero en la hoja de origen
    ActiveSheet.Range("A1").Select 'posicionar el puntero en la la celda de la hoja de origen
    Range("F13").Value = Range("F13").Value + 1
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas