Guardar automáticamente con cierto formato de excel

Tengo una plantilla, y quiero que cuando uno le de cerrar, automáticamente guarde el documento en base a la información de ciertas celdas.
La plantilla esta configurada para que solo muestre una región de la hoja(Filas de 1 a 31 y columnas de A a AB), y todas las demás están bloqueadas y ocultas; ademas hay listas de autofiltro en las celdas A1, B1, C1 y D1; y a partir de la elección que se haga en ellas, se generan los números debajo de ellas por medio de fórmulas (estas celdas también están bloqueadas pero no ocultas.
Quiero lograr que cuando cierre la hoja, me guarde el documento como lo guardaría haciendo: Menu/Guardar Como/Otros Formatos/Guardar como Tipo/Texto con Formato (delimitado por espacios).
Usando como nombre la secuencia de números de las celdas donde se aplico el autofiltro.
Espero haberme explicado, sino con mucho gusto te envío la plantilla a ver si me puedes ayudar, gracias!

1 respuesta

Respuesta
1
Con el siguiente SUB, dentro de ThisWorkbook, tienes la mitad resuelta.
.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim RUTA As String
  Dim NOMBRE As String
  Dim RutaNombre As String
  RUTA = "C:\Users\boumerang\Documents\"
  NOMBRE = "Archivo"
  RutaNombre = RUTA + NOMBRE
  ActiveWorkbook.SaveAs Filename:=RutaNombre, FileFormat:=xlTextPrinter,_
  CreateBackup:=False
End Sub
.
La otra mitad está en la asignación de NOMBRE. ¿De qué celdas obtienes este nombre?
.
Lo que quiero que me de como nombre de archivo, aunque se vea un poco extenso, es lo que contiene la celda A1, pegado de lo que contiene la celda B1, pegado de lo que contiene C1, pegado de lo que contiene D1, luego rayita abajo, y luego lo que contienen esas mismas columnas pero de la ultima fila escrita.
¿Quieres qué te envíe el archivo? Es que siento que no me se explicar bien!
Ah, cabe destacar que el contenido de la hoja son puros números, y más aun, aquellos que asignaran el nombre del archivo son puros números enteros...
y de paso... ¿ese sub que me enviaste convertirá la plantilla en una plantilla con macros o seguirá siendo una plantilla simple?
Está bien. Envíame el archivo para que sea más directo.
.
[email protected]
.
¿Enviarás el libro?
Ya te envíe la plantilla, disculpa el retraso
Lo que me enviaste no es muy claro. Solamente dice NODATA por todos lados.
ahh! Ok, disculpa la falta de aclaración. Es que te envíe la plantilla en blanco!
Bueno, en la fila 1, en las celdas de la A a la DE hay autofiltro con listas:
Columna A: Numero de Estación Meteorológica.
Columna B: Año del que se van a ingresar datos.
Columna C: Mes del que se van a ingresar datos.
Columna D: Día del que se van a capturar datos.
Cuando escoges los valores para esas celdas, se autogeneran las demás por fórmulas que yo les puse. Las 24 celdas restantes de cada fila deben rellenarse con datos que uno captura manualmente (puedes poner números aleatorios si lo deseas). Lo que necesito, como lo mencione antes, es que el documento se autoguarde en el formato que te indique antes, pero que ademas lo haga con un nombre en particular, que seria:
PARAMETRO_NUMERO DE ESTACION_AÑO_MES.prn
Lo del PARÁMETRO, y no se si seria demasiado difícil, seria con un cuadro de dialogo que aparezca con el mensaje: ¿Qué parámetro acaba de capturar? Cuando uno le da cerrar, con dos botones, uno que diga HUMEDAD y otro que diga TEMPERATURA... y que dependiendo del botón que se presione se de esa parte del nombre.
Y por adelantado, gracias por la paciencia amigo!
Y avisame si molesto mucho, es que es la primera vez que uso esta página!
¿Sería el siguiente un ejemplo de archivo generado?
.
TEMPERATURA_7_2010_9.prn
.
¿Sería otro el siguiente?
.
HUMEDAD_5_2010_12
.
Si es así, confírmalo con tu respuesta y entonces prosigo.
.
Por cierto, con paciencia todo lo podemos.
.
Si, así serian los nombres de los archivos!
Gracias por entenderme!
Finalmente:
.
Los datos para estación, año y mes, ¿son resultado del filtrado? Si es así, ¿Los tomo de la primera fila en que aparecen, que no necesariamente es la fila 2? ¿El dato está siempre en una fila determinada?
.
Con lo anterior, ya podré generar el código que necesitas, al momento de cerrar el libro.
.
Sigamos...
Víctor hugo
Bien, los datos para el nombre(estación, mes y año) serán tomados SIEMPRE de la fila 1, específicamente de las celdas A1(estación), B1(año) y C1(Día).
Gracias por tu ayuda y espero tu respuesta!
Siendo así, esta es tu solución. Pruébala.
.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim RUTA As String
Dim NOMBRE As String
Dim RutaNombre As String
Dim TIPO As String
 TIPO = InputBox("HUMEDAD o TEMPERATURA")
 If TIPO = "HUMEDAD" Or TIPO = "TEMPERATURA" Then
  RUTA = "C:\Users\boumerang\desktop\"
  NOMBRE = TIPO & "_" & Range("A1").Value & "_" & Range("B1").Value & "_" & Range_ ("C1").Value
 RutaNombre = RUTA & NOMBRE
 MsgBox RutaNombre
 ActiveWorkbook.SaveAs Filename:=RutaNombre, FileFormat:=xlTextPrinter,_  CreateBackup:=False
 Else
  MsgBox "Tipo incorrecto"
  Cancel = True
 End If
End Sub
Esta apareciendo un error... te he enviado las imágenes a tu correo!
De paso, se podría que en vez de ser un TEXTBOX para asignar el HUMEDAD O TEMPERATURA, fuese un DIALOG BOX, ¿o sea que ya tenga los botones HUMEDAD y TEMPERATURA?
Si no se puede, no te preocupes, ya un mundo me has ayudado con esto, ya casi esta listo!
No tengo experiencia con ¿cómo se llama el método? Ah! DialogBox; ya lo estudiaré, pero, te ofrezco la siguiente solución alterna.
.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim RUTA As String
Dim NOMBRE As String
Dim RutaNombre As String
Dim TIPO As String
Dim Mensaje As String
Dim Estilo As String
Dim Título As String
Mensaje = "SI=HUMEDAD NO=TEMPERATURA CANCEL=ANULAR"
Estilo = vbYesNoCancel
Título = "Elija el tipo de archivo"
Respuesta = MsgBox(Mensaje, Estilo, Título)
If Respuesta = vbYes Then TIPO = "HUMEDAD"
If Respuesta = vbNo Then TIPO = "TEMPERATURA"
If Respuesta = vbCancel Then Exit Sub
RUTA = "C:\Users\boumerang\desktop\"
NOMBRE = TIPO & "_" & Range("A1").Value & "_" & Range("B1").Value & "_" & Range("C1").Value
RutaNombre = RUTA & NOMBRE
MsgBox RutaNombre
ActiveWorkbook.SaveAs Filename:=RutaNombre, FileFormat:=xlTextPrinter, CreateBackup:=False
End Sub
.
El error que te muestra, es porque es posible que no puedas escribir en la ruta que especificas. Trata con otra, digamos, el escritorio pero no de alluser, sino del usuario en el que estás trabajando, o en una memoria USB.

Añade tu respuesta

Haz clic para o