Macro me cierra el libro origen y me deja con la copia

7 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Macro me cierra el libro origen y me deja con la copia

Hola amigos, saludos paco

Tengo esta macro busxada con S. google y bajada de la WEB

Sub Guarda_consecutivo()
'Boton en Hoja1
'xxxxxxxxxxxxxxxxxxxxxxxxxx
Sheets(2).Select 'AGREGUE ESTA.SE QUE LAS 2 LINEAS LAS PUEDES COLOCAR EN UNA SOLA
Range("B2").Select
'xxxxxxxxxxxxxxxxxxxxxxxxxx
  Range("b2").Value = Range("b2").Value
  archivo = ThisWorkbook.Path & "\" & Range("b10") & Format(Date, " dd-mm-yyyy ") & Range("c2")
  If Dir(archivo & ".xls") <> "" Then
    Names.Add "archivos", "=files(""" & archivo & "*.xls"")"
    archivo = archivo & Format([counta(archivos)] + 1, "_0")
    Names("archivos").Delete
  End If
    ActiveWorkbook.SaveAs archivo & ".xls"
End Sub

Hace que al copiar el libro, se copie según nombre

Si existe el libro con el mismo nombre, le agrega un numero (consecutivo);     archivo = archivo & Format([counta(archivos)] + 1, "_0")

Hasta aqui bien PEEERO, cierra el libro origen y me deja la copia abierta y precisamente quiero lo contrario, QUE CIERRE LA COPIA Y ME MANTENGA EL ORIGEN ABIERTO, para eguir trabajando CON EL ORIGEN

Tambien si se puede hacer en una sola linea las 2 primeras, lo he visto pero no recuerdo como es

Dejo el libro con lamacro

 

AdjuntoTamaño
Office spreadsheet icon consulta_necesitomas.com_.xls39.5 KB

Etiquetas: 

Bridge.assa
Imagen de Bridge.assa
Offline
última acción: Hace 8 años 7 meses
alta: 14/08/2015 - 16:02
Puntos: 10
Solucion posible

Asi es como me funciono, tambien puse lo el select en una linea para que recuerdes como se hace

Sub Guarda_consecutivo()
'Boton en Hoja1
'xxxxxxxxxxxxxxxxxxxxxxxxxx
Sheets(2).Range("B2").Select
'xxxxxxxxxxxxxxxxxxxxxxxxxx

  Range("b2").Value = Range("b2").Value
  Archivo = ThisWorkbook.Path & "\" & Range("b10") & Format(Date, " dd-mm-yyyy ") & Range("c2")
  If Dir(Archivo & ".xls") <> "" Then
  Dim libro As Workbook
    Names.Add "archivos", "=files(""" & Archivo & "*.xls"")"
    archivo1 = Archivo & Format([counta(archivos)] + 1, "_0")
    ActiveWorkbook.SaveAs archivo1 & ".xls"
    Names("archivos").Delete
    Set libro = ActiveWorkbook
  End If
    Workbooks.Open (Archivo)
    libro.Close True
End Sub

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Hola Bridge.assa, mil gracias

Hola Bridge.assa, mil gracias por tomar en cuenta mi solicitud

Probado y tengo a decir que

El boton para ejecucion de la macro, esta en la hoja1 y la captacion de datos (celdas) para dar el nombre al libro estan en la Hoja2

Aunque la macro capte de la hoja1 donde esta el boton, sigue los mismos errores apareciendo

1º- me manda error en tiempo de ejecucion

Error en el metodo Select de la clase Range

en la linea

'xxxxxxxxxxxxxxxxxxxxxxxxxx
Sheets(2).Range("B2").Select   Entiendo que esta linea tien que ser desactivada pero, tengo que tener la direccion hacia la Hoja2   Sheets(2).select
'xxxxxxxxxxxxxxxxxxxxxxxxxx

2º- Desactivo la linea y cambia el error

y me marca la linea

End If
    Workbooks.Open (Archivo)
    libro.Close True

Si solo dejo Sheets(2).Select Por lo de seleccionar la hoja2 visto que el boton está en la hoja1 y la captacion tien que ser de la hoja2

Sigue el mismo error de la imagen y en la misma linea     Workbooks.Open (Archivo)

¿Algo que se pueda hacer?  Estoy con Excel 2013

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 días 9 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Intentar seleccionar un rango

Intentar seleccionar un rango en una hoja que no está seleccionada provoca este error 1004 en el método Select de la clase Range

Lo raro es que esto no siempre falla, a veces funciona o parece que funciona, o depende de la versión, o no sé

Así que o lo haces en dos pasos, primero seleccionas la hoja y luego seleccionas la celda

O directamente no seleccionas la celda, porque no necesitas seleccionar la hoja ni seleccionar la celda para tomar su valor

por ejemplo para referirte al valor de la celda b10 de la hoja 2, puedes hacerlo así

ThisWorkbook.Sheets(2).Range("b10").Value

Esto permite leer el valor de esa celda (en el libro que contiene el código) independientemente de cuál sea la hoja activa

Así que podrías leer esas celdas para obtener el nobmre de tu archivo por ejemplo así:

With ThisWorkbook.Sheets(2)

   .Range("b2").Value = .Range("b2").Value

   archivo = ThisWorkbook.Path & "\" & .Range("b10").Value & Format(Date, " dd-mm-yyyy ") & .Range("c2").Value

End With

 

Fíjate que dentro del With utilizo .Range   con un punto, para indicar que es un rango de esa hoja

 

------
Ya sé Excel, pero necesito más.

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Hola PacoGracias por tu

Hola Paco

Gracias por tu aporte a mi fallo

Funciono y mas rapido que antes PEEEEEEERO

Me cierra el origen y me deja la copia abierta. DEBERIA dejarme abierto el origen y haber cerrado la copia

el unico fallo que le encuentro

[code]Sub Guarda_consecutivo()
With ThisWorkbook.Sheets(2)
   .Range("b2").Value = .Range("b2").Value
   archivo = ThisWorkbook.Path & "\" & .Range("b10").Value & Format(Date, " dd-mm-yyyy ") & .Range("c2").Value
End With
If Dir(archivo & ".xls") <> "" Then
    Names.Add "archivos", "=files(""" & archivo & "*.xls"")"
    archivo = archivo & Format([counta(archivos)] + 1, "_0")
    Names("archivos").Delete
  End If
    ActiveWorkbook.SaveAs archivo & ".xls"

End Sub[/code]

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 días 9 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
o utilizas una solución

o utilizas una solución parecida a la que te propone bridge.assa, utilizando una variable de objeto para cerrar el libro que quieras, 

o en vez de guardar como utilizas "guardar copia como", que crea una copia del archivo pero sigues trabajando con el original.

ActiveWorkbook.SaveCopyAs archivo & ".xls"


 

------
Ya sé Excel, pero necesito más.

JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Cuanto no vale el saber? y

Cuanto no vale el saber? y cuanto te agradezco tu solucion

Gracias bridge

Gracias Paco, un genio al lado de expertos, sin menospreciar estos. Una WEB llena de sabiduria y en esta frase, incluio a todos aquellos que de forma altruista, ayudan a inexpertos como yo

Quedo al jorno jejejejeje

Resuelto