Mantener formato de la hoja de destino

Solo consultas sobre macros y código VBA Excel.
Reglas del Foro 1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!

Mantener formato de la hoja de destino

Notapor arz1995 » 08 Ene 2018 06:36

buenos días,

estoy usando la macro que carga un fichero de texto, busca la palabra "FAIL", guarda sus Id en una "tabla" (separada por ;) y los carga a la tabla de la hoja. El fallo viene en que no se mantiene el formato original dado a la hoja, se queda todo en blanco y escribe los valores, como si se sobrescribiese la hoja.

pos = InStr(sLinea, "FAIL")
If pos <> 0 Then
Id = InStr(sLinea, "RQM")
sId = Mid(sLinea, Id, 8)
Tabla = Split(sId, ";")
For i = LBound(Tabla) To UBound(Tabla)
oSht.Cells(iRow, iCol) = Replace(Tabla(i), Chr(34), "")
Next
iRow = iRow + 1
End If
Loop
Close #iNumArchivo

supongo que el fallo está en la función Replace y debería usar algo así cómo para pegar solo valores. Alguna sugerencia?

un saludo y gracias!
arz1995
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5
Registrado: 11 Dic 2017 06:17

Re: Mantener formato de la hoja de destino

Notapor Antoni » 08 Ene 2018 09:01

El código que adjuntas no puede ser el culpable de lo que explicas.
Sube el archivo Excel y el archivo TXT y le echaremos un vistazo.
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5359
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Mantener formato de la hoja de destino

Notapor arz1995 » 11 Ene 2018 05:47

El código usado es este incluyendo dos IF para buscar los "FAIL" (los del primer mensaje) en las líneas y sólo escribir estas.
El txt usado contiene lineas en las que algunas pone FAIL, no es necesario subirlo.

Pongamos que tengo este código, que no filtra los FAIL y que el txt son 5 líneas cualquiera. La cuestión es que la hoja de destino tiene una estética preparada y un template establecido previamente a mano y no quiero que se vaya al garete cuando ejecute la macro.

Sub ImportaArchivoTexto()
Dim oSht As Worksheet
Dim sNomArchivo As String
Dim iNumArchivo As Integer
Dim sLinea As String
Dim Tabla() As String
Dim iRow As Long
Dim iCol As Long
Dim i As Long
’ ¿Archivo import existe?
sNomArchivo = ThisWorkbook.Path & "\Clientes.txt"
If Dir(sNomArchivo, vbNormal) = "" Then
MsgBox "Archivo " &sNomArchivo & " inexistente"
Exit Sub
End If
’ Hoja de destino
Set oSht = ThisWorkbook.Sheets(1)
oSht.Cells.Clear
’ Apertura de archivo de texto
iNumArchivo = FreeFile
iRow = 1
Open sNomArchivo For Input As #iNumArchivo
’ Recorre las líneas del archivo de texto
Do While Not EOF(iNumArchivo)
iCol = 1
Line Input #iNumArchivo, sLinea
Tabla = Split(sLinea, ";")
’ Copia los campos de la línea en las celdas de Excel
For i = LBound(Tabla) To UBound(Tabla)
oSht.Cells(iRow, iCol) = Replace(Tabla(i), Chr(34), "" )
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
Close #iNumArchivo
End Sub

muchas gracias y un saludo!
arz1995
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5
Registrado: 11 Dic 2017 06:17

Re: Mantener formato de la hoja de destino

Notapor Antoni » 11 Ene 2018 08:28

-

Cambia:

oSht.Cells.Clear



por

oSht.Cells.ClearContents

.
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5359
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Mantener formato de la hoja de destino

Notapor arz1995 » 11 Ene 2018 08:57

Diste en el clavo!

Muy novato en vba y algunas sentencias todavía se me pasan por alto o no las conozco...

He hecho algo diferente (borrar línea) ya que había algún titulo que no quería borrar.

Mil gracias!
arz1995
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5
Registrado: 11 Dic 2017 06:17


Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados