Guardar, guardar + y correlativo

Hola Experto.
Para ser sincero tengo tres problemillas y casi nulo manejo de macros pero me urge tener esta planilla excel, a ver si me tienes paciencia y si pudieras ayudarme te lo agradecería mucho.
Con la herramienta autoformas diseñe 2 botones : Guardar y Agregar celdas sé lo que quiero que hagan pero no sé como hacer la macro.
Guardar: Primero pide confirmación con el texto ¿Desea guardar la cotización? Si la respuesta es si, entonces guardar como libro nuevo en una ruta específica EJ: D:Programa/excel/cotizaciones y que el nombre del libro lo saque de una celda llamada Folio ("C7"); Si la respuesta es no entonces cierra sólo el mensaje no la hoja ni el libro.
Agregar celdas: Debería agregar celdas pero después de la última fila ocupada con datos y antes de la fila de los totales.
Y lo último es que la celda Folio ("C7") debería tener un número que vaya avanzando cada vez que abro el archivo EJ: Folio= 200301, al abrir de nuevo, Folio = 200302, es decir un correlativo.
Te agradecería si me orientas con los códigos y donde ponerlos para que funcionen. De antemano Muchas Gracias.

1 respuesta

Respuesta
1
Ok para el primer caso seria así:
sub macro1 ()
'macro asignada para eel boton guardar
dim folio as string
folio = range("c7")
a = MsgBox(prompt:="¿Desea guardar la cotización? ", Buttons:=vbYesNo)
If a = vbYes Then
ChDir "D:Programa\excel\cotizaciones\"
    ActiveWorkbook.SaveAs Filename:= _
        "D:Programa\excel\cotizaciones\" + folio + ".xls", FileFormat:=xlExcel8 _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
ElseIf a = vbNo Then
Exit Sub
End Ifend sub
para el segundo caso podria ser asi
seleccionar la primera fila en donde comienzan tus datos por ejemplo comienzan en a1:
sum macro2()
'macro asignada al boton agregar celdas
range ("a1").select
do while selection <> empty
activecell.offset(1,0).select
loop
Selection.Insert Shift:=xlDown
end sub
para el tercer caso seria una macro autoopen ejem:
sub Auto_Open()
'esta macro se ejecuta cada que se abre el archivo
dim i as integer
range("c7").select
i=range("c7")
1=1+1
activecell=i
end sub
Se que te va a servir.
Hola.
Gracias por responder; Te comento que probé los códigos y en la macro1 que es para el botón guardar me lanza un error con el final de la rutina: End Ifend sub, que no sé cómo arreglar. Con respecto a la macro2 que tiene que agregar celdas pasa lo sig: En mi planilla primero va un JPG con un logo decorativo después por la orilla izquierda viene el Folio (que es el correlativo) y su respectivo titulo en la celda de arriba; más abajo viene una celda "código cliente" con una fórmula buscarv y luego de eso, hablando ya de la fila N°13, empieza la cotización y sus datos, cuando me dices que seleccione la celda que contiene los datos yo entiendo que son los datos de la cotización (no las celdas que te mencionaba arriba) entonces pongo como rango Range "F14"(que es donde comienzo a rellenar con datos) cuando hago esto me da un error con la linea "Do While" pero cuando cambio el rango a "A1" no da errores pero lo que hace es solo ir seleccionando hacia abajo las celdas (sin agregar filas). Mi idea es que sólo utilice el rango F14:N33 para considerarlo por que en F14 comienza el llenado de datos y en N33 termina, es decir la primera fila nueva debería insertarse entre las filas 33 y 34 (hay algo que no entiendo cuando señalas que seleccione la primera fila de mis datos pones el ejemplo "A1" pero esa es una celda ¿no debería ser sólo 1?)
De antemano muchas gracias por tu buena voluntad.
sub macro1 ()
'macro asignada para eel boton guardar
dim folio as string
folio = range("c7")
a = MsgBox(prompt:="¿Desea guardar la cotización? ", Buttons:=vbYesNo)
If a = vbYes Then
ChDir "D:Programa\excel\cotizaciones\"
    ActiveWorkbook.SaveAs Filename:= _
        "D:Programa\excel\cotizaciones\" + folio + ".xls", FileFormat:=xlExcel8 _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
ElseIf a = vbNo Then
Exit Sub
End If
'la primera vez estaban juntas solo habia que separarlas
end sub
eso seria el primer caso.
bueno en el sgundo caso esta es una rutina debes ajustar a la tus nececidades por ejemplo cambia el range de donde quieres que comiense a busca el bucle significa do while selection <> empty, esto quiere decir ejecutar sentencia mientras la seleccion sea diferente de cero osea que va a ir bajando una fila si quieres que vaya insertando filas mete la sentencia de insercion dentro de loop (me refiero a Selection.Insert Shift:=xlDown ), si esto no te sircve por que no grabas una macro buscar la abres y la adaptas a tus requerimientos. 
sum macro2()
'macro asignada al boton agregar celdas
range ("a1").select
do while selection <> empty
activecell.offset(1,0).select
loop
Selection.Insert Shift:=xlDown
end sub
Hola... Disculpa que moleste tanto
Probé las indicaciones que me das; ahora sale el MsgBox pero al dar "Si" muestra un error 1004' error en el método 'SaveAs' de objeto _Workbook' y al depurar resalta esta linea:
ActiveWorkbook.SaveAs Filename:= _
        "D:\PROYECTOS\Electroclima\PROGRAMA\Excel\Cotizaciones\" + folio + ".xls", FileFormat:=xlExcel8 _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
Que es la ruta de la carpeta donde quiero que se guarde la hoja nueva. Estoy tratando de familiarizarme con VB para poder editar los problemas pero mientras tanto necesito tu ayuda.
Con la macro insertar me parece que el problema sería que cuando la cotización está vacía no se podrían agregar celdas porque todas las filas del rango serían iguales a "0", ¿sería posible insertar un nombre a la fila de totales por ejemplo Nombre=LIMITE (con el rango de la fila completa) y decirle a la macro: Inserte una fila justo antes de LIMITE?
¿Me podrías orientar con estas soluciones?
De antemano muchas gracias por tu tiempo y disposición.
Disculpa la tardanza pero no había revisado mi mail, oye por que no intentas esto yo la macro que te presente esta hecha con excel 2007 a lo mejor tu estas usando la version 2003 o 2000, lo que tienes que hacer es grabar una macro simulando que guardas el archivo que quieras, paras la grabación y miras el código que se genero y solo lo insertas en el programa que estas usando y listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas