UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

maquinitaazul


Hola amigos muy buenas noches, quisiera pedirles un poco de ayuda para resolver un requerimiento. Les platico:

Tengo un código para crear nuevos libros, junto con un formulario que contiene un textbox y un botón. Lo que requiero es que cuando haga click en el botón de crear, el libro que aparece se guarde automáticamente en una carpeta con el nombre escrito en el textbox y con la fecha actual, por ejemplo: "inventario 25/08/2015 23:35 p.m."

He buscado en la web y no logro adaptar al 100 con lo pedido.

Agradezco de antemano su atención, muchas gracias. Saludos a todos.
Archivos
Crearlibro1.zip
No tienes los permisos para descargar los archivos.
(15 KB)

Igtelo


Hola maquinita.

Una forma de hacerlo:
Pasa el dato del textbox a una celda y desde allí das la instrucción para guardar, concatenando la ruta/nombre y fecha.

Importante: Toma en cuenta que para guardar archivos Excel no acepta las diagonales ni puntos ni ?, por ahí va, son 6-8 caracteres no válidos para nombrar archivos, chécalo en la ayuda.

Sustituyes las diagonales por guiones o le das formato de texto a la fecha...

Tú ya manejas muy buen nivel de macros, sino te sale lo hacemos mañana que baje tu archivo. Adolfo en un rato más ha de entrar y te dará otra alternativa.

Tú Puedes amiguito (así decía el tío Gamboín, jeje).

Saludos
Ignacio Téllez
P.d: Ya deberías echarnos la mano para contestar, hace falta "gente nueva".

adolfo castro


Hola buenos días, te adjunto posible solución, yo lo he probado en excel 2013 y me funciona, prueba a ver como te va.

Sub alternativa()
Dim nbre
Dim ruta
Dim n_arch
Dim n_hoja
nbre = Format(Now, "dd_mm_yy hh_mm_ss")
ruta = UserForm1.TextBox1.Text
n_arch = ActiveWorkbook.Name
n_hoja = ActiveSheet.Name
MsgBox ruta & nbre & ".csv"
ChDir ruta
ActiveWorkbook.SaveAs Filename:=ruta & nbre & ".csv", FileFormat:=xlCSV, CreateBackup:=False
ActiveSheet.SaveAs ruta & nbre & ".xlsm"
End Sub


saludos adolfo castro

maquinitaazul


Hola Igtelo y Adolfo, antes que nada muchas gracias por responder.

Primeramente Igtelo muchas gracias por tomarme en cuenta para las consulta, claro que si trataré de atender con aquellas que pueda resolver.

Volviendo al archivo, la opción de Adolfo me marca un error.
"ChDir ruta"  : "No se ha encontrado la ruta de acceso"

Cuando omito esa parte ya no me genera error pero lo que hace es que me cambia el nombre del libro "crearlibro" en lugar de crear uno nuevo y  nombrarlo.

 Lo que necesito es que se cree y guarde un libro nuevo con el nombre que este en el textbox1 y la fecha-hora actual.

Ejemplo: El textbox contiene la palabra "INVENTARIO", al dar aceptar se tiene que crear un libro nuevo ya con el nombre de "INVENTARIO 26/08/2015 15:05 p.m. " y debe estar guardado en una ruta "puede ser una carpeta".

adolfo castro


Hola buenas noches, vuelvo a reiterar, que es muy importante, saber que sistema operativo usamos, asi como la version de excel, pues a veces, marca error, tanto por el sistema, como por la version de excel, asi que si no te importa aportar esos datos, quizás podamos corregir el fallo.

saludos adolfo castro

maquinitaazul


Sistema operativo windows 7 Ultimate 32 bit
Excel 2013

adolfo castro


te adjunto libro, creado en windows10, lo hice con el 7, excel 2013 64bits observa como trabaja la macro y adaptala a tus necesidades,
Archivos
crear libro.zip
No tienes los permisos para descargar los archivos.
(17 KB)

maquinitaazul


Lamento decirlo pero no me funciona, estuve haciendo pruebas y nada.
Con el siguiente código se crea un libro con el nombre del textbox y la fecha-hora actual pero lo guarda como el archivo base no logro entender, no me acerco a lo que requiero. 

Código:
Sub alternativa()

Dim nbre
Dim ruta
Dim n_arch
Dim n_hoja
Dim n_texto

nbre = Format(Now, "dd-mmmm-yyyy hh-mm-ss")

ruta = UserForm1.TextBox1.Text

n_texto = UserForm1.TextBox2.Text

n_arch = UserForm1.TextBox2

ChDir ruta

ThisWorkbook.SaveAs ruta & n_texto & nbre & ".xlsm"

End Sub

Igtelo


Que tal Maquinita / Adolfo.

Te van 2 archivos, Maquinita1 y 2.
El 1 te crea los libros nuevos a partir del mismo y el 2 los crea independientemente, están creados como te comenté ayer.

Para ambos pulsa las teclas CTRL+k, te aparece el formulario, escribes en el textbox, click en crear, los archivos te los guarda en la carpeta que previamente hayas creado.

¿El archivo Csv por qué o para qué? 

Nos comentas.

Saludos
Ignacio Téllez
Archivos
MaquinitaAzul.zip
No tienes los permisos para descargar los archivos.
(42 KB)

maquinitaazul


Hola Igtelo, eso del formato csv no tiene nada que ver esa fue una macro que tome de la web y estaba adaptando pero esa extensión nunca la había utilizado lo que yo utilizo es .XLS o .XLSM. acerca del archivo que me envía lo checaré en la tarde o noche y te platico como me fue, gracias y saludos.

Igtelo


Hola Maquinita.

Pues entonces usa éste, para que le damos tantas vueltas. Ya tienes 3 maneras para hacerlo.

Saludos
Ignacio Téllez
Archivos
Maquinita3.zip
No tienes los permisos para descargar los archivos.
(25 KB)

maquinitaazul


Hola Igtelo, ya cheque tu solución y esta genial, modifique un poco el código para guardar el documento en una carpeta especifica y me va bien, sólo una cosa, al momento en que me guarda el libro se me concatena el nombre de la carpeta, ¿cómo evito eso?

Código:
Private Sub CommandButton1_Click()
Dim nombre As String, ruta, ruta1 As String

Application.ScreenUpdating = 0
Workbooks.Add
nombre = TextBox1 & " " & Format(Now, "dd-mmm-yyyy--hh-mm-ss")
ruta = "D:\2015 p\2015 p"
ruta1 = "D:\2015 p"

ActiveWorkbook.SaveAs ruta & nombre, FileFormat:=52 'Si lo quieres como xlsx quita FileFormat:=52 (52=xlsm)
ActiveWindow.Close
Unload UserForm1

Call Shell("explorer.exe " & ruta1, vbNormalFocus) 'Muestra los archivos
Application.ScreenUpdating = 1
End Sub

En el textbox coloque la palabra "hola", el nombre del libro me queda así:

2015 phola 27-ago-2015--23-04-39.xlsm

Saludos.

Igtelo


Que tal Maquinita.

Vamos por partes:

1.- Los tipos de variables "siempre" hay que definirlos totalmente, ruta la dejas sin tipo, debe ser ruta as string. Aunque estén en la misma linea hay que hacerlo con todas.
Sino le pones el tipo lo toma como "variant", éste es el tipo que por default le asigna Excel y es la que más memoria consume y si lo dejas como variant, entonces no tiene caso declararlas. (Has de cuenta que estás matando una mosca a cañonazos, es un desperdicio de recursos).

2.- La variable ruta1 no la usas en la macro, quítala no tiene caso; en el shell debes usar ruta.

3.- Te da el nombre de la carpeta porque así se lo indicas en la definición de la variable ruta, estas repitiendo el 2015 p.

Ve éste tutorial y corre la macro de igual forma; verás que es muy fácil depurar y corregir las macros.

http://www.universoexcelforo.com/t1181-como-trabaja-una-macro-y-la-hoja-de-calculo-simultaneamente-videotutorial

También ve el de encontrar la ayuda en VBA.


Saludos
Ignacio Téllez

maquinitaazul


Ok Igtelo, gracias por la ayuda. Lo checo y cierro el tema cuando lo solucione. Saludos.

maquinitaazul


Hola a todos, les comento que no he intentado ningún método para satisfacer al 100% mi consulta, esto por falta de tiempo, pero estaré trabajando en ello y cuando lo termine lo subiré a aportes, mientras no me queda mas que solucionar el tema puesto que ya no hay comentario y no quiero infringir las reglas del foro, gracias a Igtelo y a Adolfo Castro. Saludos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.