Importar Hoja Excel de otro libro conservando formatos

Estoy importando una hoja de un libro a otro y me ocurre que la hoja cuando la importo no me conserva los formatos de número. Por ejemplo los números no los puedo sumar, al arrastar el cursor por las celdas veo que solo cuenta y no suma. Y otros números con decimales me los pone con "punto" de millares, no coma de decimales.

El código es este.

Sub ImportarSolred()
Application.ScreenUpdating = False
Dim dir As String 'decalaramos la variable
dir = ActiveWorkbook.Path & "\Archivos Comunes\Solred (1281).xlsx"
Workbooks.Open Filename:=(dir)
Application.DisplayAlerts = False 'quitamos las alertas par que lo haga sin preguntar nada
Sheets("Solred").Select
Columns("A:AB").Select
Selection.Copy
ActiveWorkbook.Close SaveChanges:=False
Sheets("Solred(1281)").Select
Columns("A:AB").Select
ActiveSheet.Paste
Application.CutCopyMode = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("PanelPrincipal").Select
ThisWorkbook.RefreshAll
End Sub

El fichero de la macro es "xlsm" y el que tiene la hoja que importo es "xlsx". No se si tiene algo que ver.

No se si es posible que a la hora de decirle que "copy" lo haga respetando los formatos o al hacer el "paste".

1 respuesta

Respuesta
1

Si es que te los copio como texto agregale, Después de tu paste, haz lo siguiente:

En este ejemplo estoy con la columna B y de adáptalo a tus columnas/rango que necesites

Range("B:B").SpecialCells(2).Value = Range("B:B").SpecialCells(2).Value
Range("D:D").SpecialCells(2).Value = Range("D:D").SpecialCells(2).Value

Perdón quise decir que en en este ejemplo tanto la columna"b" y "D" son los que inicialmente lo tenía como texto y con la instrucción anterior lo paso a número, Cualquier duda me comentas

¡Gracias! Pero no me ha funcionado.

He buscado mucho y probado mucho y al final me ha funcionado con este código.

Pero de todos modos gracias.

'pasamos a numero las celdas de texto
Dim Rango As Range, celda As Variant
i = Sheets("Solred_1281").Range("A" & Rows.Count).End(xlUp).Row
Set Rango = Range("J2:U" & i)
For Each celda In Rango
celda.FormulaLocal = celda.FormulaLocal
Next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas