从脚注中获取源对象(单词vba)

时间:2017-12-07 12:01:30

标签: vba ms-word

我创建了包含Source对象的脚注(Source对象是Sources列表中的单个对象,我从中创建参考书目) 我想要做的就是遍历所有脚注并从每个Source对象获取XML文件以检索有关Author等的信息。 从脚注中获取Source对象时遇到问题。我试图选择脚注并从选择中检索此对象,但没有任何作用。也许你们有一个正确的方法来检索"父对象"来自vba中的另一个对象?

Sub convertAllFootnotes()
 Dim ftn As Footnote
 Dim oRng As Range
  For Each ftn In ActiveDocument.Footnotes
    Set oRng = Selection.Range
    oRng.Start = oRng.Start - 1
    oRng.End = oRng.End + 1
    oRng.Select
    oRng.Text = stringFromSource(ftn) 'i don't know how to get source object 
                                  'from footnote
  Next ftn
End Sub
来自源函数的

字符串(工作正常,我必须传递给Surce对象)

Function stringFromSource(curField As Source) As String
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.LoadXML curField.XML
authors = "":  title = "": publish = "": city = "": year = "": periodic = 
""
'authors
Set surname = xmlDoc.getElementsByTagName("b:Last")
Set name = xmlDoc.getElementsByTagName("b:First")
Dim l As Integer
l = 0
For Each el In surname
    If el.Text = "" Then Exit For
    authors = authors + (el.Text & " " & name(l).Text & "  ")
    l = l + 1
Next el
'title
Set titlex = xmlDoc.getElementsByTagName("b:Title")
For Each el In titlex
    If el.Text = "" Then Exit For
    title = title + (el.Text & " ")
Next el
'publisher
Set pubx = xmlDoc.getElementsByTagName("b:Publisher")
For Each el In pubx
    publish = publish + (el.Text & " ")
Next el
'city
Set cityx = xmlDoc.getElementsByTagName("b:City")
If cityx.Length = 0 Then city = city + ("(brak miasta)" & " ")
For Each el In cityx
    city = city + (el.Text & " ")
Next el
'year
Set yearx = xmlDoc.getElementsByTagName("b:Year")
If yearx.Length = 0 Then year = year + ("(brak roku wydania)" & " ")
For Each el In yearx
    year = year + (el.Text & " ")
Next el
'periodical title
Set periodx = xmlDoc.getElementsByTagName("b:PeriodicalTitle")
For Each el In period
    periodic = periodic + (el.Text & " ")
Next el

Dim outputString As String
outputString = author & "- " & title & ", " & publish & periodic & ", " & 
year
stringFromSource = outputString
End Function

0 个答案:

没有答案