×

用宏快速整理微信的聊天记录

井大在群里有很多精彩的聊天记录,大家在转发,也有人在整理汇总,但是过去整理的方式是一条一条的粘贴复制,比较低效。经过摸索,找到一个比较高效的整理微信聊天记录的办法。

第一步:用合并聊天记录的功能+印象笔记来快速汇总

详情操作方式参考:如何快速整理微信聊天记录

第二步:复制所有内容粘贴到Word中进行编辑

在上一篇文章中也有说明操作方式。但是涉及到正则表达式,等专业技能,对于很多人使用起来还不是很方便。为了更加方便大家整理,做了一套傻瓜化的处理方式,录制并编写了一个专用的宏来处理。

专用的宏

第三步:复制印象笔记里的内容都Word里面,点击开发者工具→宏→选择宏→运行宏

用宏快速整理聊天记录

补充说明,Word里面的开发者工具选项是默认不在主菜单的,需要手动开启。开启方式:

文件→选项→自定义功能区→主选项卡→勾选开发工具

在Word中开启开发工具

需要的可以直接Alt+F11,粘贴这段代码保存运行即可。

Sub 井大聊天记录整理()

‘ 井大聊天记录整理 宏

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “”

        .Replacement.Text = “”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = True

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “井底望天 ([0-9]{2}):([0-9]{2})”

        .Replacement.Text = “”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = False

        .MatchAllWordForms = False

        .MatchSoundsLike = False

        .MatchWildcards = True

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “^p”

        .Replacement.Text = “。”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “。。”

        .Replacement.Text = “。”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

End Sub

我来解释一下这一段代码

批量替换昵称和时间

我们观察到前面都是【井底望天】,这四个字是相同的,后面的时间是不同的,需要替换掉的,因此正则表达式写为井底望天 ([0-9]{2}):([0-9]{2})

第一步:正则表达式,因此正则表达式写为井底望天 ([0-9]{2}):([0-9]{2}),替换为里面的内容不动

第二步:点击更多,选择使用通配符

第三步:点击全部替换。

正则表达式批量替换时间

这一段对应的宏代码为

Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “井底望天 ([0-9]{2}):([0-9]{2})”

        .Replacement.Text = “”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = False

        .MatchAllWordForms = False

        .MatchSoundsLike = False

        .MatchWildcards = True

    End With

使用正则表达式批量替换时间

接下来,发言人昵称和时间替换完了,还有很多换行符也对阅读体验造成影响。那么如何批量替换换行符呢?

批量替换换行符

换行符的字符标识方法为^p,也就是shift+6输入上面的那个字符,然后输入小写字母p。

下面的替换为保持不动,空白。然后更多里面的使用通配符这个勾选要去掉,点击全部替换即可完成对回车换行符的全部替换。这个操作只能在Word里面完成,印象笔记的编辑器不支持这样的命令和字符替换。为了减少后面标点符号的处理工作,我们把回车换行符替换为了句号。

批量替换换行符

这一段对应的代码为

Selection.Find.Execute Replace:=wdReplaceAll

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “^p”

        .Replacement.Text = “。”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

批量替换回车换行符

句号的处理

另外每个人微信聊天的习惯不一样,有的人习惯在一句话后面加个句号,有的人不加句号。如果我们刚才替换的时候,回车换行符不是替换为句号,而是空白的话,就要手工去加很多句号。如果我们把回车换行符替换为了句号,那么就会出现一句话后面有连续两个句号的情况。但是连续两个句号比没有句号好处理多了。我们可以再用一段替换代码,把连续两个句号的替换为一个句号就可以了。

这一段对应的代码是

Selection.Find.Execute Replace:=wdReplaceAll

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = “。。”

        .Replacement.Text = “。”

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchByte = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

好了至此我们的编辑工作绝大部分就完成了,剩下的就是一些人工的编辑了,这个工作量就大大降低了。

其实我们解决这个问题,还是延续了杀鸡要用牛刀的思维。解决一个问题会再出现新的问题,但是最终解决的效率会大大优化。

接下来就是要在不同的软件之间形成Workflow的批处理方式了。

希望能够对你有所启发。如需原始文件,请发邮件到ideaguy@qq.com,详细说明来意。

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新消息 消息中心
有新私信 私信列表
搜索