【发布时间】:2016-12-24 14:12:15
【问题描述】:
这是典型的 WhatsApp 历史聊天文件 (.txt) 在记事本中打开时的样子。
请注意,示例中有 4 条消息,每条消息都以日期/时间戳和用户名开头。 此外,还有一些字符标志着每条消息的结束(对我来说似乎是 Chr(10))。
此外,第三条消息(待购买清单)由多行组成,在 WhatsApp 聊天中通过按 Enter 键来实现。
我的目标是将上面的数据导入到 Excel 工作表中,这样四条消息中的每一条都将单独排成一行,如下所示:
到目前为止,我一直在尝试使用 Workbook.OpenText 方法,但失败了。问题是待购买清单的多行以不同的行结束,而不是被视为一条完整的消息。
我也需要一个快速而优雅的解决方案,因为我需要处理包含数千条消息的大型聊天文件。 所以,当然,我可以根据行是否有日期/时间/用户名戳来循环和合并行,但这需要大量时间处理大文件。
编辑: 请在下面找到我目前用于导入 .txt 文件的代码。我并没有要求一个优雅的解决方案,如果结果是这样,我很抱歉。我的意思是我希望它最终变得优雅,只需要一两条或更多线索。
Sub ImportTXT ()
ChatFileNm = Application.GetOpenFilename(FileFilter:="Text Files (*.txt), >*.txt", Title:="Select Chat File To Be Opened")
If ChatFileNm = False Then Exit Sub
SourceSheet = FSO.GetBaseName(ChatFileNm)
Workbooks.OpenText filename:= _
ChatFileNm, _
Origin:=65001, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlTextQualifierNone, ConsecutiveDelimiter:=False, _
Tab:=False,>Semicolon:=False, _
Comma:=False, Space:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1)), DecimalSeparator:=".", ThousandsSeparator:=",", _
TrailingMinusNumbers:=True
End Sub
【问题讨论】:
-
大卫,谢谢。这是我的第一篇文章,如果这很重要。是的,我的代码无法按我想要的方式工作,请参阅上面的编辑。是的,我想要一些免费的代码和一些免费的智慧之言,但只是为了把我推向正确的方向。如果你能给我一些,我将不胜感激。
-
我会尝试使用
FileSystemObject阅读文本。看起来您可以根据每行开头的23.05.16格式进行解析。 -
@hey 感谢您进行编辑以包含您的代码——我在下面发布了一个建议。如果您的文件在换行方面很时髦,我们可以添加一些额外的逻辑来处理这些。让我们看看它是如何工作的。
标签: excel vba import chat whatsapp