Macro: Abrir libro .xlsm, sino crearlo

En esta ocacion deseo la siguiente ayuda.

Tengo una hoja "DIARIO", en A2=Codigo, b2=Cédula, c2=Nombre.

Necesito una macro que al digitar en la celda A2 de la hoja diario, me abra la carpeta del Libro ("E\AIM\") (esta tiene unos 600 libros con nombre desde 1.lxms al 600. Xlms) y si el libro no existe en esa carpeta abra entonces el archivo: base.xlsm de esta misma carpeta ("E\AIM\base3xlms")

Los datos de la hoja Diario se van a la ultima fila y abre el archivo del la carpeta si existe, pero si no existe: me esta dando problemas.

Tengo estas macro, funcionan perfecto pero individualmente, necesito unirlas.

Sub DIARIO_GUARDAR()

Range("A2:G2").Select
Selection.Copy
'PEGO LOS DATOS
Sheets("DIARIO").Select

'Elige la celda donde se va a grabar
Range("A" & Range("J1").Value).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

Sheets("DIARIO").Select

Range("D2").Select
Selection.ClearContents
Range("E2").Select
Selection.ClearContents
Range("F2").Select
Selection.ClearContents
Range("G2").Select
Selection.ClearContents
Range("H2").Select
Selection.ClearContents
Range("I2").Select
Selection.ClearContents
Range("A2").Select
Ruta = "E:\AIM\"
archivo = Range("A2")
Workbooks.Open (Ruta & archivo)

Range("A2").Select
Selection.ClearContents
End Sub

Sub DESEMBOLSO_CREAR_HOJA_SI_NO_EXISTE()

Workbooks.Open "E:\AIM\BASE.xlsm"

End Sub

Respuesta
1

Aquí van las instrucciones que necesitas. De paso te ajusté algunas líneas que comento para tu control.

Sub DIARIO_GUARDAR()
'comentada y ajustada x Elsamatilde
Range("A2:G2").Copy     'EM: no es necesario seleccionar antes de copiar
'PEGO LOS DATOS
Sheets("DIARIO").Select
'Elige la celda donde se va a grabar
Range("A" & Range("J1").Value).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("DIARIO").Select       'EM: se puede limpiar un rango y no celda x celda
Range("D2:I2").ClearContents
Range("A2").Select
ruta = "E:\AIM\"
archivo = Range("A2")
'EM: verificar si el archivo existe en la ruta  (*)
If Dir(ruta & archivo) <> "" Then
    Workbooks.Open (ruta & archivo)
    'el libro activo ahora es 'archivo'
    Range("A2").Select
    Selection.ClearContents
Else
    'controla posible error de que tampoco exista este libro
    On Error GoTo sinlibro
    Workbooks.Open "E:\AIM\BASE.xlsm"
    On Error GoTo 0
   'el libro activo ahora es BASE
End If
Exit Sub
sinlibro:
MsgBox "No se encontraron los libros buscados.", , "ATENCIÓN"
End Sub
'(*) extraído del manual 500Macros.

 No se si las 2 últimas líneas de tu primer macro debieran quedar allí, luego de abrir el libro 'archivo'.... revisa y ajusta ese detalle.

Sdos y no olvides valorar la respuesta para darla por cerrada si todo queda resuelto, sino comenta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas