Word VBA:在页脚/标题中转换上标

时间:2017-03-10 22:16:42

标签: vba ms-word header footer

我正在使用这样的代码将每个部分的所有页眉/页脚输出到文本文件: Word VBA - getting text file output to look right

我已经能够使用Replace()转换sHeader / sFooter字符串变量中的所有特殊字符而没有问题。

示例:sFooter = Replace(sFooter, ChrW(8804), "^R'\ {\uc2\u8804 <=}'")

在我尝试替换上标之前,一切都很好。 Alt + x只给出了字母本身的值。我试过查找十六进制值(可能不是一件事)但没有成功。我甚至尝试过不同的拉丁字符值。

我录制了一个宏,看看Word将如何取代它并获得:

    Selection.Find.ClearFormatting
With Selection.Find.Font
    .Superscript = True
    .Subscript = False
End With

Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "A"
    .Replacement.Text = "^super{a}"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

问题是我不知道如何一起使用它们。 我尝试使用oSec.Footers(wdHeaderFooterFirstPage).Range.Find...而不是Selection.Find...,但这会产生一个空字符串。

我可以从sHeader / sFooter以某种方式创建一个String对象,以便我可以利用录制的宏代码吗?我尝试使用谷歌搜索,将字符串转换为对象,但没有得到任何帮助。有更好的方法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

我知道这并不能完全回答你的问题,但问题是该字符是否相同,无论是否为上标,即上标格式化,就像粗体或斜体一样。

例如,粗体A,普通A和上标A都有代码65。

如果要保存到文本文件,则无法保存格式,因此您需要为上标字符创建自己的表示。

查找/替换代码中的表示,即“^ super {a}”是Word使用的,允许您对具有特定格式的文本执行查找/替换。

注意:有一些特殊字符,例如²,它们有一个单独的字符代码,因此它们会有不同的代码。

答案 1 :(得分:0)

感谢M1chael的输入。

我可以通过将选择设置为当前页眉/页脚部分来使上面录制的宏工作。

示例:

oSec.Footers(wdHeaderFooterPrimary).Range.Select
Selection = ActiveDocument.ActiveWindow.Selection

由于