Macro para filtrar registro y copiar solo valores

¿Hola, qué tal? Espero que muy bien. Antes de nada, gracias por su atención.
Verá, estoy desarrollando una macro que:
1. Me filtre los registros de una hoja mostrándome solo aquellos >0
2. Salve los valores de estos registros en una hoja CSV (comma delimmited)
Curioseando he llegado hasta aquí:
Sheets("Plantilla").Select
'añado una hoja temporal llamada template
    Sheets.Add
    Sheets("Hoja2").Select
    Sheets("Hoja2").Name = "template"
'hago el autofiltro
    Sheets("Plantilla").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="<>"
'me copio los valores filtrados a la hoja temporal
    Selection.Copy
    Sheets("template").Select
    Application.CutCopyMode = False
    Columns("A:A").Select
    Sheets("Plantilla").Select
    Selection.Copy
    Sheets("template").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'esto no se para que es pero me salía al grabar la macro.
    Application.CutCopyMode = False
'con la macro salvo esta hoja temporal como Plantilla.csv
    ChDir "C:\"
    ActiveWorkbook.SaveAs Filename:="C:\Plantilla.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
'borro la hoja temporal de antes
    Sheets("template").Select
    ActiveWindow.SelectedSheets.Delete
'quito el autofiltro
    Selection.AutoFilter
'me posiciono en una celda de otra hoja
    Sheets("Hoja1").Select
    Range("H16:J20").Select
El resultado de esto es que cuando voy a cerrar el excel, me dice que lo salve y demás y luego voy a ver el CSV que me ha generado y tan solo tiene valores en algunas columnas. Otras me pone #VALOR o algo así como que le faltase el valor de la fórmula del excel original, pero es que lo que quería era copiar solo los valores...(que en el excel original si los puedo ver...) No se si me he explicado bien... Si necesita algún detalle más, encantado lo comentaré.
Saludos y gracias!
Respuesta
1
Te dejo tu rutina ajustada. Hay líneas que no se te generaron con la grabadora pero serán necesarias para cualquier otra situación, por ej, que selecciones alguna celda de la fila a filtrar.
Sub csv()
Sheets("Plantilla").Select
'añado una hoja temporal llamada template
    Sheets.Add
    ActiveSheet.Name = "template"
'hago el autofiltro
    Sheets("Plantilla").Select
    'selecciono alguna celda de título para filtrar
    Range("A1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=2, Criteria1:="<>"   'atención: dejé col B
    'selecciona el rango filtrado
    ActiveSheet.Range("A1").Select
    Selection.CurrentRegion.SpecialCells(xlCellTypeVisible).Select
'me copio los valores filtrados a la hoja temporal
    Selection.Copy
    Sheets("template").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'esto no se para que es pero me salía al grabar la macro.
'NOTA: es para quitar el parpadeo que queda cuando realizás un copy
    Application.CutCopyMode = False
'con la macro salvo esta hoja temporal como Plantilla.csv
'NO. Estás salvando el libro completo
    ChDir "C:\"
    ActiveWorkbook.SaveAs Filename:="C:\Plantilla.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
'HASTA AQUÍ. Ya estás en el nuevo libro (csv)
'si ejecutás las líneas sgtes se ejecutarán sobre el libro csv
    'Sheets("template").Select
    'ActiveWindow.SelectedSheets.Delete
'quito el autofiltro
    'Selection.AutoFilter
'me posiciono en una celda de otra hoja
    'Sheets("Hoja1").Select
    'Range("H16:J20").Select
End Sub
Como comento allí, lo que está haciendo la macro, es guardar el libro como csv, no solo la hoja, salvo que tengas 1 sola hoja... comentame.
Y además, como cuando Guardás como... Desde el menú archivo, te quedás en el nuevo libro. Si necesitas volver al anterior, debieras guardar su nombre para volverlo a abrir.
Pruébalo y si esto responde a tu consulta no olvides finalizarla
Hola gracias, he tenido un problema con la conexión, no se si ha llegado la finalización y puntuación que acabo de hacer. Bueno, en cualquier caso, muchas gracia por su ayuda. La macro funciona, yo estaba atrancado en ese paso. A decir verdad veo que no hace falta quitar y poner el autofiltro porque siempre salvo los datos filtrados en el CSV. Ahora lo que voy a intentar es que una vez salvado el CSV me vuelva otra vez al excel y se posicione en una celda como pretendía con el último conjunto de comandos.
De nuevo, muchísimas gracias! Espero que le vaya todo muy bien!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas