Quiero usar VBA para leer archivos de texto, extraer datos relevantes y transferirlos a un archivo de Excel. Este es el tipo de código que estoy usando:
Sub ReadText()
Dim myFile As String, textline As String
myFile = Application.GetOpenFilename()
Open myFile For Input As #1
LineNumber = 0
Do Until EOF(1)
LineNumber = LineNumber + 1
Line Input #1, textline
"do stuff to extract the info I want and transfer to Excel
Loop
Close #1
End Sub
Estoy viviendo en un país de habla hispana, así que ahí estoy.Hay muchos personajes acentuados que necesito conservar. El problema es que estos caracteres acentuados se están convirtiendo en otros caracteres. Por ejemplo, lo que debe leerse como INGLÉS se lee como INGLÉS
He visto que hay soluciones para reemplazar los caracteres acentuados, pero no quiero hacer esto porque los acentos todavía son necesarios para lo que quiero hacer con la información en Excel.
¿Me estoy perdiendo una opción de formato en algún lugar?
Respuestas
2 para la respuesta № 1Otra forma de hacerlo es usando ADO.
Sub ReadUTFFile()
Dim objADO As ADODB.Stream
Dim varText As Variant
Set objADO = New ADODB.Stream
objADO.Charset = "utf-8"
objADO.Open
objADO.LoadFromFile "C:Userspankaj.jajuDesktoputftest.txt"
varText = Split(objADO.ReadText, vbCr)
Range("A1").Resize(UBound(varText) - LBound(varText)).Value = Application.Transpose(varText)
End Sub
Nota - No te olvides de hacer referencia a Microsoft ActiveX DataObjects.
Prueba de muestra
0 para la respuesta № 2
Aquí hay una función que solía mantener / forzar para detener el formateo automático
Sub spcChr
Dim i As Long
Dim num As Integer
Dim x() As Byte
x = StrConv([A1], vbFromUnicode)
For i = 0 To UBound(x)
Select Case x(i)
Case 211: num = 79
Case 63: num = 83
Case Else: num = x(i)
End Select
[B1] = [B1] & Chr(num)
Next
End Sub
Aquí las celdas A1 que contienen los nombres con caracteres especiales. B1 es para procesamiento.