gpt4 book ai didi

vba - 如何将VBA中的非ASCII字符写入Excel工作表?

转载 作者:行者123 更新时间:2023-12-02 12:16:29 25 4
gpt4 key购买 nike

我正在用 VBA 读取一个相当大的文本文件。源文件包含来自国际 session 的各种文本数据,我正在以有组织的格式将提取的部分数据重写到 Excel 工作表中。我已将例程的重要部分放在下面。 (我是一个原始程序员,所以我使用原始方法。对我的糟糕形式感到抱歉。)

问题来自于非简单 ASCII 字符的字符位置。文本文件包含各种条目,例如“München”。当写入 Excel 文件时,文本被严重破坏。在这种情况下,我得到“München”。真正烦人的是,我可以从文本文件中复制文本,并将其粘贴到 Excel 中,没有问题。但记录太多,无法手动完成此操作。我真的希望将原始(非 ASCII)字符写在电子表格上!

我花了相当多的时间寻找解决方案,并且发现了两个相关的线程。首先,第一个答案中描述了一种称为“binaryStream”的东西: Excel VBA - export to UTF-8它与我想要做的事情还不够接近,而且我无法弄清楚我需要的部分。

还有Save text file UTF-8 encoded with VBA它描述了如何将 UTF-8 数据写入文本文件。差不多了,但我想写入 Excel 电子表格!

请问有什么建议吗?

Sub ParseText()
Dim myFile As String, Author1 As String, Author2 As String
Dim dept As String, inst As String, country As String
Dim title As String, LineText As String
Dim nSourceFile As Integer, NewRecord As Boolean
Dim First13 As String, nn As Integer, Row As Integer, LineText2 As String

myFile = Application.GetOpenFilename()
nSourceFile = FreeFile
Open myFile For Input As #nSourceFile
Row = 2
While Not EOF(nSourceFile)
Line Input #nSourceFile, LineText ''This is a blank line
Line Input #nSourceFile, LineText ''This has both first and last name
Author1 = Right(LineText, Len(LineText) - 2)
Author2 = RTrim(Left(Author1, Len(Author1) - 1))
LineText = Author2
nn = InStrRev(LineText, " ")
Author1 = RTrim(Left(LineText, nn))
Author2 = RTrim(Right(LineText, Len(LineText) - nn))
nn = Len(Author2)
LineText = LCase(Right(Author2, nn - 1))
Author2 = Left(Author2, 1) & LineText
Cells(Row, 1) = Author1
Cells(Row, 2) = Author2

Row = Row + 1
Wend '' reached the end of file


End Sub

最佳答案

答案在评论中提供并被OP接受:

“您还可以将源文件转换为 UTF-16LE(又名 Windows 内的 Unicode,记事本可以转换它),然后在读取 VBA 代码内部时使用 StrConv 和 vbFromUnicode 标志转换字符串” – z̫͋

关于vba - 如何将VBA中的非ASCII字符写入Excel工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23514947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com