Saltar al contenido

Hacer una copia de un archivo excel con otro nombre con Macros.


Recommended Posts

publicado

Buenas..

Este es un pedido o requerimiento que no encontré en el foro.

Yo tengo un archivo excel llamado Base.xls donde es mi archivo en blanco o base, es decir como un formulario en blanco.En el cual contendrá varias hojas con títulos en columnas y macros ya que supone empezar a ser una base de datos de algo especifico.
Entonces, Yo desde otro archivo el cual llamare INICIO.xls pondré a funcionar un programa. En el mismo tendrá un botón de "+nuevo maquina" por ejemplo. El macro que necesitaría es uno que me copie mi archivo base cree una copia en un lugar especifico y me permita escribir el nombre de la "nueva maquina". Y así tantas veces me copie y renombre mi archivo base como maquinas quiera agregar.

Yo se pasar hojas a otros libros. o que me guarde una copia del mismo libro en el que estoy trabajando con otro nombre. El traspaso de macros de libro a libro no me sale tan bien. yo creo que quizás deba abrirse (oculto al usuario) el libro base para poder copiarlo. Pero quizás haya un método mas sencillo para hacerlo, o no..
El excel que estamos usando en el de 2003 y eso quizás sea también un problema.

Si alguien puede darme una ayuda con esto, muchísimas gracias.

 

publicado

ya encontré parte de mi solución lo único que no puedo es cambiar el nombre.

paso el codigo

Private Sub CommandButton1_Click()
'en hoja 2 crea nombre de maquina segun textbox1
Hoja2.Cells(Rows.Count, "a").End(xlUp).Offset(1) = TextBox1.Value


'copiar base de datos en carpeta de maquinas
 FileCopy "C:\Users\Olga\Desktop\Nueva carpeta\Base.xls", "C:\Users\Olga\Desktop\Nueva carpeta\maquinas\Base.xls"

'cambiar nombre del archivo base segun celda textbox1
 Name "C:\Users\Olga\Desktop\Nueva carpeta\maquinas\Base.xls" As TextBox1.Value
 

Exit Sub

End Sub
 

Cuando hago el paso a paso todo corre bien hasta que llega a esta linea:
Name "C:\Users\Olga\Desktop\Nueva carpeta\maquinas\Base.xls" As TextBox1.Value
donde me borra el archivo base que cree y seguro es porque algo hice mal o no dimensione el valor del textbox.
pero ya estoy muy cansado de pensar..

como deberia ser el codigo para cambiar el nombre?

lo debo hacer segun el textbox o sobre el ultimo nombre ingresado en mi hoja2?

 

Gracias por la ayuda!

 

publicado

dependiendo de cual sea el contenido (EXACTO) del TextBox1 (???)

para mover/copiar archivos de una ubicación a otra, puedes usar al menos dos formas:
en los ejemplos, "Origen" y "Destino" son (una cadena de texto que representa)
-> ruta + directorio/s + nombre_archivo + EXT(ension)

1) una instrucción =>Name "Origen" As "Destino"<=

     a) para renombrar un archivo (mismo directorio) los requisitos son...
         (1) que "Origen" EXISTA (y este cerrado) y...
         (2) que "Destino" NO EXISTA
         (p.e.) Name "C:\Misma ruta\Archivo1.abc" As "C:\Misma ruta\Archivo2.xyz"

     b ) si "Origen" y "Destino" son diferentes, la instrucción (prácticamente) hará lo mismo que...

2) una instrucción =>FileCopy "Origen", "Destino"<=
    en este caso, "Destino" sera INVARIABLEMENTE reemplazado <= OJO

si cualquier duda (o información adicional)... comentas ?
saludos,
hector.

publicado

Gracias por responder. Esta forma de copiar archivos y de renombrarlos ya la conocía.
pero solo veo que me sirve si el archivo1 lo quiero como archivo2 que es lo que pondría en el cogido.
pero si yo quiero que el nombre sea variable. obteniendo el dato de un textbox o una celda (la cual no va a ser siempre la misma) no encuentro forma de hacerlo.
Paso el archivo base con códigos ya cargados para ejemplificar mejor.
1)en la hoja 1 están el botón de inicio al programa
2)en la hoja 2 se van cargando una abajo de otra las maquinas (que son con las que yo nombraría cada archivo que cree)
3)en las capetas MAQUINA  se copiarían y renombrarian todos mis archivos BASE con el nombre de la maquina. 

de todas formas sigo buscando en otros foros o paginas porque se que la solución debe ser bastante siempre.
Gracias por leerme!

PROYECTO MANTENIMIENTO.rar

publicado

Ya encontré la solución a mi problema!
Era que definitivamente estaba haciendo algo mal ya que no entendía bien el concepto de la función Name.

paso el codigo!

Private Sub CommandButton1_Click()
'en hoja 2 crea nombre de maquina segun textbox1
Hoja2.Cells(Rows.Count, "a").End(xlUp).Offset(1) = TextBox1.Value
Hoja2.Cells(1, 3) = TextBox1.Value


'copiar base de datos en carpeta de maquinas
 FileCopy "Z:\Adrian\z-Cosas en Excel\Proyecto mantenimiento\Nueva carpeta\Base.xls", "Z:\Adrian\z-Cosas en Excel\Proyecto mantenimiento\Nueva carpeta\maquinas\Base.xls"

'cambiar nombre del archivo base segun celda hoja2
  Dim NombreNuevo As String
  NombreNuevo = "Z:\Adrian\z-Cosas en Excel\Proyecto mantenimiento\Nueva carpeta\maquinas\" & Hoja2.Cells(1, 3).Value & ".xls"

    Name "Z:\Adrian\z-Cosas en Excel\Proyecto mantenimiento\Nueva carpeta\maquinas\Base.xls" As NombreNuevo
 
Exit Sub

End Sub

 

El tema esta cerrado. Gracias.

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.