epub和mobi等基于HTML的格式成为电子书流行格式后,纸质书时代常采用的脚注在这种电子书里就消失了,注释通常采用章节末尾或文章末尾的尾注形式。因为我喜欢某种字体,而这种字体不知道是什么原因,即使内嵌到epub中也没法使用。因此,我经常将epub文件转换为pdf文件。像我这种养成了阅读过程中随时查阅注释习惯的人,在平板上阅读pdf文件,看脚注比看尾注就方便很多了,将尾注转换成脚注就成了刚需。

如果要靠人工将尾注一条条改成脚注,那简直就是受刑,要知道一本书注释数量经常几百条上千条。好在只要是有规律的工作,总可以求助万能的VBA,可以将epub先转换成word,在word中用VBA将尾注转换成脚注后再转换成pdf。下面就是将尾注转换为脚注的VBA。

Sub 尾注改脚注()Dim Text, FootnoteText As String, Found As Boolean, Myrange As RangeDim i, EndOfSelectionPara, ParaIndex, notes As LongFound = True'书籍中尾注数量太多的话宏的运行时间太长,用多次运行的方式修改较好。'这里设置每次运行最多修改1000条尾注notes = 1000i = 0Application.ScreenUpdating = FalseEndOfSelectionPara = Selection.Paragraphs(1).Range.EndSet Myrange = ActiveDocument.Range(0, EndOfSelectionPara)ParaIndex = Myrange.Paragraphs.CountActiveDocument.Paragraphs(ParaIndex).Range.SelectSelection.MoveLeft'改变文档视图,避免移动段落时总是自动重新分页ActiveWindow.View.Type = wdNormalViewLoopAgain:While i <= notesSelection.Find.ClearFormatting'查找注释编号,适用于格式为(number)或[number]形式的编号。'如果编号格式为其他形式,需修改正则表达式With Selection.Find.Text = "[\(\[][0-9]{1,}[\)\]]".MatchWildcards = True.Forward = TrueEnd With'没有编号了,准备结束Found = Selection.Find.ExecuteIf Not Found ThenGoTo ReadyToStopEnd If'记录编号,作为寻找相应注释文本的关键字Text = Selection.Range.Text'查找注释段落,找不到相应编号的尾注,则重新循环,找下一个编号Selection.MoveRightWith Selection.Find.Text = Text.MatchWildcards = False.Forward = TrueEnd WithFound = Selection.Find.Execute'找不到对应的注释就不管这个编号了,处理下一个编号If Not Found ThenGoTo LoopAgainEnd If'记录注释文本。从注释编号后一个位置至段落末尾视为注释文本FootnoteText = Mid(Selection.Paragraphs(1).Range.Text, Len(Text) + 1, _Len(Selection.Paragraphs(1).Range.Text) - Len(Text) - 1)'删除注释段落Selection.Paragraphs(1).Range.Delete'重新向前找到注释编号,删除该编号并在相应位置添加脚注Selection.MoveLeftWith Selection.Find.Text = Text.MatchWildcards = False.Forward = FalseEnd WithSelection.Find.ExecuteSelection.Range.DeleteEndOfSelectionPara = Selection.Paragraphs(1).Range.EndSet Myrange = ActiveDocument.Range(0, EndOfSelectionPara)ParaIndex = Myrange.Paragraphs.CountWith SelectionWith .FootnoteOptions.Location = wdBottomOfPage.StartingNumber = 1.NumberStyle = 28.NumberingRule = wdRestartPage.LayoutColumns = 0End With.Footnotes.Add Range:=Selection.Range, Reference:=""End WithSelection.TypeText (FootnoteText)       '将光标由脚注区域重新移动到正文中上一次插入注释的位置之后ActiveDocument.Paragraphs(ParaIndex).Range.SelectSelection.MoveLefti = i + 1Wend
ReadyToStop:Application.ScreenUpdating = TrueActiveWindow.View.Type = wdPrintView
End Sub

这个宏成功实现目标的前提是注释编号格式要一致,每条注释只能有一个段落(若有多个段落只有第一段会被移动到脚注中,其余段落会在原来位置)。就我处理过的epub电子书,只有极少数注释会超过一个段落,可以在VBA处理完后可以快速浏览一下,有必要时对照原始epub文件做下手工修改,工作量一般也不大。

用VBA将尾注改为脚注相关推荐

  1. Word基础(三十三)脚注与尾注的转换

    在Word中,如何让脚注转换成尾注,或尾注转换成脚注呢? 方法: 点击引用选项卡,脚注分类中点击对话框启动器 在弹出的脚注和尾注对话框中,点击转换©- 弹出转换注释对话框,选择想要的转换即可

  2. php脚注信息怎么删除,如何在Word2010中添加、删除脚注、尾注

    脚注和尾注共同的作用是对文字的补充说明,在语文课本中,我们经常会看到页面底部或是文章末尾会有相应的脚注或尾注,在Word中我们可以很轻松的添加这些脚注.尾注. 添加脚注.尾注 1.将光标定位到需要插入 ...

  3. word尾注后加入致谢(mac版)

    最近写论文,学校要求是致谢一章放在参考文献后面,但是我的参考文献是用的word的尾注做的,导致在参考文献后面没办法添加分页符.接下来将解决这个问题. 前提:mac版word(是真的难用!!!)以下教程 ...

  4. word2010以尾注的方式插入参考文献实现自动编号以及参考文献之后添加标题

    1.光标移到要插入参考文献的地方,选择菜单中"插入"菜单→"引用"-"脚注和尾注".在对话框中点击红圈标记,选择"尾注" ...

  5. 脚注交叉引用序号不一样_利用Word的尾注来做参考文献的注释编号--解决编号加方括号,交叉引用,去除尾注上访横线等问题...

    利用 Word 的尾注来做参考文献的注释编号 [1] 用 word 尾注和手动添加相比, 可以在你删除或添加注释时, 自动调整序号. 因此做参考文献的编号时较为方便,可以和 Note Express ...

  6. word 插入脚注尾注和删除页眉页脚

    1.快捷键:Alt+Ctrl+F插入一个脚注,Alt+Ctrl+D插入一个尾注 要重新开始自动编号时,必须在插入后继脚注之前先插入一个分节符: 选择菜单"插入"→"分隔符 ...

  7. 批量修改word尾注或脚注格式

    先使用插入尾注脚注对话框把所有尾注或脚注变成基本的数字1,2,3... 接着用 Ctrl+F,出现查找替换对话框,在 查找内容后修改脚注则输入^f,修改尾注则输入^e ,替换为输入[^&],全 ...

  8. word 脚注尾注批量跟换样式的方法

    用默认的1,2,3插入尾注.等做完所有的工作,再用word的特殊字符将尾注替换为带方括号格式的[1].[2].[3]即可,当然也可按照需要替换成:<>{}<>等格式. 具体操作 ...

  9. Word控件Spire.Doc 【脚注】教程(1) 使用C#或VB.NET在 Word 文档中插入脚注和尾注

    Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库.在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建.编辑.转换和打印 Micr ...

  10. word多次引用同一脚注或尾注

    word多次引用同一脚注或尾注 http://v.youku.com/v_show/id_XMTgwODU1NjQ0.html

最新文章

  1. 1微秒等于多少皮秒_1分钟了解,1皮秒到底有多短!
  2. BZOJ 1091([SCOI2003]分割多边形-分割直线)
  3. svn命令行 批量添加(add)所有新增文件
  4. VS2010Web默认的浏览器设置和VS里调试JavaScript代码的设置
  5. Halcon 标定与准确测量
  6. Java对MySQL数据库进行连接、查询和修改【转载】
  7. 【干货】接地气的产品设计流程
  8. java 输出全部小写_输入小写,输出大写,为什么报错?
  9. java 程序更新_如何关闭JAVA更新程序
  10. Pandas dtypes(数据类型)
  11. 2006年星座运势全解-射手
  12. vue v-model计算器案例
  13. 8.5 意境级讲解迁移学习
  14. Win7系统的开机个性化
  15. 截止今年六月底的s9t9
  16. 在线画图工具绘制流程图怎样做
  17. 分享几个故事:让我想明白了不少事情
  18. webRTC中语音降噪模块ANS细节详解(三)
  19. python牛顿法算立方根_立方根求解(牛顿迭代法)
  20. Hui-iconfont字符图标不显示或显示异常。

热门文章

  1. P4565 [CTSC2018]暴力写挂 题解
  2. python数字转unicode_python2.7响应数据中unicode转中文
  3. RBM算法模型应用在推荐系统 Python代码实现
  4. HYSBZ - 5145 未来日记
  5. VS报错:当前页面的脚本发生错误
  6. 纸的大小图解_手工折纸大全图解 不一定是A4大小)一般都有7
  7. ble HCI 流控机制
  8. H3C S5820V2_5830V2交换机IRF2堆叠后升级方法
  9. python几个循环_python 几个循环的效率测试
  10. 论实体图书馆的馆线制改革