/ / VBA: necesita leer caracteres acentuados de un archivo de texto y MANTENERLO - excel, vba

VBA: necesita leer caracteres acentuados de un archivo de texto y MANTENERLO - excel, vba

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 № 1

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

enter image description here

enter image description here Prueba de muestra

enter image description here


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.