从Word

时间:2018-01-16 18:31:51

标签: ms-word formatting superscript

如果我有一个带有脚注的Word文档,它们会被文档正文中的上标编号引用。如果我将我的内容复制/粘贴到ckeditor,来自LibreOffice,它会保留我的上标;但是,如果我从Word复制/粘贴,则上标将转换为方括号。

如何在从Word粘贴时保留上标?

1 个答案:

答案 0 :(得分:0)

我可以想到两种方法可以做到。一个是编辑WordOpenXML。另一种是使用Word的查找/替换功能。最后一个使用VBA实现起来要简单得多,因为VBA没有内部工具来处理XML。

您需要在复制内容之前运行此宏。假设文档之后应该保持不变,我已经包含了将宏的动作捆绑在一个Undo条目中的代码,然后在代码的末尾执行了Undo。

在Word中,术语^ f可与Find一起使用来定位脚注。

代码在循环中搜索此术语,并用脚注的索引号替换找到的术语。这消除了绊倒你的脚注标记。然后应用脚注样式以保留上标格式。请注意,循环从文档的末尾开始到开始,以便保留脚注编号(否则它们都是“1”)。

Sub ReplaceFootmarkWithSuperscriptNumber()
    Dim rngFind As word.Range
    Dim findTerm As String
    Dim bFound As Boolean
    Dim lFootnoteNum As Long

    findTerm = "^f"
    Set rngFind = ActiveDocument.content
    Application.UndoRecord.StartCustomRecord

    With rngFind.Find
        .ClearFormatting
        .Text = findTerm
        .Forward = False
        Do
        bFound = .Execute
        If bFound Then
            lFootnoteNum = rngFind.Footnotes(1).index
            rngFind.Text = CStr(lFootnoteNum)
            'rngFind.Select
            rngFind.Style = ActiveDocument.styles(wdStyleFootnoteReference)
            rngFind.Start = ActiveDocument.content.Start
        End If
        Loop While bFound
    End With
    Application.UndoRecord.EndCustomRecord
    ActiveDocument.Undo
End Sub