VBA:需要从文本文件中读取重音字符并保留它们

时间:2015-03-23 16:01:33

标签: excel vba

我想使用VBA读取文本文件,提取相关数据并转换为Excel文件。这是我正在使用的代码类型:

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

我住在讲西班牙语的国家,所以我需要保留许多重音字符。问题是这些重音字符正在转换为其他字符。例如,应将INGLÉS读作INGLÉS

我已经看到有替换重音字符的解决方案,但我不想这样做,因为我想要对Excel中的信息做什么仍需要重音。

我在某处错过了格式选项吗?

2 个答案:

答案 0 :(得分:3)

另一种方法是使用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:\Users\pankaj.jaju\Desktop\utftest.txt"

    varText = Split(objADO.ReadText, vbCr)
    Range("A1").Resize(UBound(varText) - LBound(varText)).Value = Application.Transpose(varText)
End Sub

注意 - 别忘了引用Microsoft ActiveX DataObjects。

enter image description here

enter image description here 样本测试

enter image description here

答案 1 :(得分:0)

这是我用来保持/强制停止自动格式化的功能

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

这里A1单元格包含带有特殊字符的名称。 B1用于处理。