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.]

mgg


Buenos días, necesito generar un archivo y guardarlo con formato csv delimitado por comas, he logrado copiar los datos que necesito de mi BBDD, pegarlos en un excel nuevo, cambiar los formatos de fecha (necesito unos formatos específicos en diferentes columnas), y guardar el archivo como .csv, el problema es que al abrirlo con el notepad me aparecen todas las filas en blanco como ; y me da error al reportarlo. 

He intentando borrar las filas vacías contando desde la última fila en excel (1048576) hasta mi última fila, el problema es que mi última fila puede variar ya que un día puedo tener 2 registros y otro día 20.

Muchas gracias!

Igtelo


Hola mgg.

Sin archivo de muestra yo no puedo, no te entiendo ni jota.

2 códigos para encontrar el número de última fila con dato, tomando como referencia la columna A:
Fila = [A1000000].End(xlUp).Row
Fila = Cells(Rows.Count, "A").End(xlUp).Row

Fila es una variable.

Para encontrar número última fila vacia:
Fila = [A1000000].End(xlUp).Row+1
Fila = Cells(Rows.Count, "A").End(xlUp).Row+1

Entra al enlace que está debajo de mi firma.

Otra alternativa y sin que te quiebres la cabeza:
Descarga el complemento para Excel ASAP Utilities, es gratuito, descárgalo desde su sitio.
En el Menú donde dice Exportar, pinchas, selecciona la opción 4 (Exportar hojas de cálculo como archivos separados) y solo selecciona lo que quieres y listo.

3RESUELTO Igtelo el 27/01/15, 04:47 am

mgg


Hola Igtelo que tal, muchas gracias!! Entiendo que es complicado, pero es que es un archivo de empresa que no puedo compartir, intentaré de ambas formas que me dices y ya te comento! Gracias por lo del complemento creo que será más sencillo! 

Saludos

4RESUELTO Respuesta Igtelo el 27/01/15, 08:43 am

mgg


Hola Igtelo, he estado intentando y no me sirve. A ver intentaré explicarme lo mejor posible

Tengo un documento "madre" llamado BBDD, desde una hoja de base de datos cada vez que cambio la fecha se me genera en otra hoja de ese mismo archivo un fichero que debo "reportar", (llamémosle FICHERO2) la longitud del fichero cambia según la fecha, puesto que algún día puede tener dos líneas y otros días 15 líneas. 

Tengo una macro que me copia este nuevo fichero a un archivo nuevo, y que me lo guarda como csv, pero al guardarlo me ocurre el problema que te comenté anteriormente con las filas vacías. Cuando manualmente borro las líneas vacías, no tengo ese problema, pero debo hacerlo desde la última fila (1048576) hasta la que sea mi última fila ese día, (algunas veces la 15, 14, 3, etc...) y me gustaría automatizarlo. 

El problema cuando intento buscar la última fila con datos en el "fichero2", es que por defecto en la hoja que me genera ese fichero, hay formulas hasta la fila 47, de manera que podría generar el "fichero2" considerando que tiene desde 1 hasta 46 líneas. Entonces cuando busco la última fila con datos, aunque estén vacías siempre me devuelve la fila 47, y en el fichero csv me tiene en cuenta hasta esa fila. 

Espero que haya quedado más claro 

Muchas gracias!

Igtelo


Hola mgg.

Primero el sermón:
¿Es muy difícil cambiar los datos de tu empresa y poner cualquier otro dato?
Hay que tener iniciativa, ser creativo...

Te dejo un ejemplo, está explicado línea por línea en la macro, con ello ya lo podrás adaptar a tus necesidades, la ejecutas con CTRL+k.

Te elimina las filas en blanco o en cero y después guarda sin filas sobrantes, ya no te aparecen las comas.
Archivos
mgg-CSV.zip
No tienes los permisos para descargar los archivos.
(19 KB)
mgg-CSV.zip
No tienes los permisos para descargar los archivos.
(21 KB)

6RESUELTO Igtelo el 28/01/15, 11:51 am

mgg


Buenos días Igtelo, y muchas gracias por tu ayuda! Probé tu código y como no, funciona a la perfección, pero cuando lo he copiado en mi código me dice "Error 7 en tiempo de ejecución, memoria insuficiente". He probado todo lo que he encontrado en internet sobre este error y nada me funciona. Además he depurado la macro y me resalta el comando: 

If Selection = 0 or Selection = "" Then.... Como que el error está allí. 

Te paso mi código a ver si puedes mirar tu de que se trata:

Sub GenerarCSVCIBV()
'

  Dim Y As Workbook
  Dim x As Workbook
  Dim FECHA As String
  Dim RUTA As String
        

Set Y = ActiveWorkbook
  
  FECHA = Year(Now()) & Month(Now()) & Day(Now())
  RUTA = Y.Sheets("BASE DE DATOS").Cells(2, 9).Value
  
    Columns("J:J").Select
    Selection.NumberFormat = "yyyy-mm-ddThh:mm:ssZ"
        Columns("EN:EN").Select
    Selection.NumberFormat = "yyyy-mm-ddThh:mm:ssZ"
    Columns("CY:CY").Select
    Selection.NumberFormat = "yyyy-mm-ddThh:mm:ssZ"
        
        Columns("CZ:CZ").Select
    Selection.NumberFormat = "yyyy-mm-dd"
        Columns("DA:DA").Select
    Selection.NumberFormat = "yyyy-mm-dd"
    Columns("DC:DC").Select
    Selection.NumberFormat = "yyyy-mm-dd"
        Columns("DM:DM").Select
    Selection.NumberFormat = "yyyy-mm-dd"
   

Cells.Select
Selection.Copy
        
 Set x = Workbooks.Add
    
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            
           ActiveWindow.DisplayZeros = False


ultimo = [A1048576].End(xlUp).Row  'Variable p/determinar veces a repetir el ciclo
[A1].Activate                             'Se posiciona en A1

For w = 1 To ultimo                       'Hace el ciclo "n" veces
If Selection = 0 Or Selection = "" Then  'Si celda activa es cero o blanco
Selection.EntireRow.Delete              'Elimina todo el renglón
Else                                             'Sino
Selection.Offset(1).Select 'Se baja una celda

 End If                                         'Cierre del if
 Next                                           'Repite ciclo hasta recorrer "n" filas
 
   
   ActiveWorkbook.SaveAs Filename:= _
        "" & RUTA & FECHA & "_CIBV" & "", FileFormat:= _
        xlCSV, CreateBackup:=False
            
            
End Sub



Muchas gracias!!!!

Igtelo


Que tal mgg.

Sin archivo no te puedo ver que es lo que pasa... Ya te dije, cambia datos.
Te dejo esto, no debes tener problemas y si los tienes: SUBE ARCHIVO, SINO YA NO INSISTAS. 
Haz lo que se te indica, no esperes que uno esté haciendo todo.

Modifiqué un poco tu código, es lo mismo sólo que más corto.
Sub GenerarCSVCIBV()

  Dim Y As Workbook
  Dim x As Workbook
  Dim FECHA As String
  Dim RUTA As String
  Dim ultimo As Long, w As Long

Set Y = ActiveWorkbook
FECHA = Year(Now()) & Month(Now()) & Day(Now())
RUTA = Y.Sheets("BASE DE DATOS").Cells(2, 9).Value

Range("J:J,EN:EN,CY:CY").NumberFormat = "yyyy-mm-ddThh:mm:ssZ"
Range("CZ:CZ,DA:DA,DC:DC,DM:DM").NumberFormat = "yyyy-mm-dd"
Cells.Copy

Set x = Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
ActiveWindow.DisplayZeros = False
Application.CutCopyMode = False

[A1].Select
ultimo = [A1048576].End(xlUp).Row
For w = 1 To ultimo
If Selection = 0 Or Selection = "" Then
Selection.EntireRow.Delete
Else
Selection.Offset(1).Select 
 End If
 Next
 
ActiveWorkbook.SaveAs Filename:="" & RUTA & FECHA & "_CIBV" & "", FileFormat:=xlCSV

Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
Application.CutCopyMode = False
[A1].Select

End Sub

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.