Formatear los numeros de varias hojas de calculo exportadas desde access

Desde access exporto varias Sheets a un libro de excel, mediante

DoCmd. TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, table, Path, True, Sheet

Ahora bien lo que quiero es que los numeros me los ponga en formato dos decimales con miles, lo logro conseguir por celda, es decir celda a celda recorre la hoja y si es numero lo formatea, pero el proceso se relantiza muchisimo. Mi idea es que de ese libro valla por cada Sheet y por columnas busque si existe algún numero en esa columna y si en esa columna hay un numero la formatee entera a dos decimales y con miles. Y luego siga con todas las Sheets existentes.

2 Respuestas

Respuesta
1

Te anexo la macro

Sub Formatear_Numeros()
'Por.Dante Amor
    For Each h In Sheets
        uc = h.UsedRange.Columns(h.UsedRange.Columns.Count).Column
        For j = 1 To uc
            For n = 1 To 9
                Set b = h.Columns(j).Find(n, lookat:=xlPart)
                If Not b Is Nothing Then
                    If IsNumeric(b) And Not IsDate(b) Then
                        h.Columns(j).NumberFormat = "#,##0.00"
                        Exit For
                    End If
                End If
            Next
        Next
    Next
    '
    MsgBox "Fin"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Gracias Dante funciona a la perfección, pero me gustaría saber que significa en el código for n =1 to 9. Es decir que es n y porque hasta 9. Pero ya te digo funciona perfectamente como siempre Dante Amor

Lo que hace es recorrer todas las columnas y en cada columna busca algún número, 1, 2, 3, 4, 5, 6, 7, 8, 9

Por eso es el ciclo de 1 a 9.

En el ciclo "FOR" le tienes que indicar que una variable, en este caso la variable n va a tomar valores desde 1 hasta 9.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Respuesta

.19.04.17

Buenas tardes, Milu

Yo lo simplificaría a tres pasos:

1.- Seleccionar todas las hojas a modificar.

2.- Seleccionar toda la hoja con el botón que está en el cruce de las filas y las columnas (pintado en amarillo):

3.- Presionar el atajo de teclado:

Ctrl + Shift + 1

Y todos los números tendrán el formato que buscas (vg. 1.212,15)

Pruebalo. Tal vez sea más rápido de lo que suponías.

Saludos

Fernando

.

¡Gracias! Pero lo que necesito, en las respuestas es código Vba, por ejemplo las respuestas de Dante Amor. De la forma que dices sin menospreciar tu ayuda, es para hacerlo manual, muchas gracias 

.

Hola, Milu

Ok, si lo que buscas es un código, este hace lo que solicitas:

Sub FormateoNumero()
FormatoNum = "#" & Application.ThousandsSeparator & "##0" & Application.DecimalSeparator & "00"
For Each LaHoja In Sheets
    For Each LaCelda In LaHoja.UsedRange
        If IsNumeric(LaCelda) Then
            If Not IsDate(LaCelda) Then LaCelda.NumberFormat = FormatoNum
        End If
    Next
Next
End Sub

Este código identifica cuál es el separador de decimales y de miles que tenga el equipo donde lo ejecutes.

Como verás, es posible.

Sólo que en mi opinión es más rápida la solución manual que la de ejecutar una rutina.

Sólo eso.

Me alegro de que tengas resuelto tu problema como fuere.

Abrazo

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas