MS Word对象模型结构:处理字段

时间:2015-01-01 23:25:51

标签: python vba ms-word word-vba lyx

目标:以编程方式处理带有书目引文的word文档(最终来自EndNote)并将其转换为其他格式(LyX)。

如何查看文档以便重新创建文档?在引用发生的地方,我只想输出对引用作品的引用,而不是文档中出现的字符。在参考书目发生的地方,我只想输出一个命令来插入参考书目,而不是文本来源。

示例输入(当显示代码关闭时显示在MS Word中):

  

如前所述[1],提示还有很长的路要走

     
      
  1. Agha,S。,在大规模营销一年后使用女用避孕套的模式。 AIDS> Educ Prev,2001。13(1):p。 55-64。
  2.   

所需的输出样式(伪LaTeX):

As was said\ref{bib526} it’s a long way to tip.

\bibliography

bib526将从Field.Code中提取。

以下计划说明了几个奇怪之处:<​​/ p>

  1. Document.Characters.Count比文档范围内的实际字符数短得多。这似乎反映了许多隐藏的字符,例如Field.Code,但我不确定参考书目中出现的字符数量。
  2. Field似乎在&#34; [1]&#34;中的某些打印字符上重复出现。我如何保证只输出一次,并且我不输出任何打印的字符作为参考? (在某些情况下有2个字段,因为有引文字段和超链接字段)。
  3. 显然Document可能在StoryRanges中有几个故事,尽管我的小测试只有一个故事。我应该注意哪些?
  4. [没有这个,下一个块没有正确格式化。不知道为什么。]

    Public Sub inspect()
        Dim a As Document
        Dim r As Range
        Set a = ActiveDocument
        Set r = a.Range
        Debug.Print "Document ranges from"; r.Start; "to"; r.End; "with";
            r.Characters.Count; "Characters"
        For ic = 11 To 16
            Set r = a.Characters(ic)
            Debug.Print "Character"; ic; r.Start; r.End; r.Fields.Count; r.Text
            Next ic
    End Sub
    

    输出:

    Document ranges from 0 to 6137 with 659 Characters
    Columns are
    A = position in `Document.Characters`
    B, C = start, end of corresponding range (often more than 1 character!)
    D = # of fields in the character
    E = printed representation of the character
              A   B    C  D E
    Character 11  10  11  0 d
    Character 12  11  1559  2 [
    Character 13  1559  1607  1 1
    Character 14  1607  1609  2 ]
    Character 15  1609  1610  0  
    Character 16  1610  1611  0 i
    

    我可能用Python做实际的程序,而不是VBA。

0 个答案:

没有答案