无法使用Excel VBA在Word doc中设置脚注

时间:2015-04-22 19:09:02

标签: excel vba ms-word

我有许多WORD文档,其中包含多个内容控件。我正在使用Excel文件来更新WORD文档。当我进行更新时,我需要插入一个描述更改的脚注。我可以更新内容控件的内容,但是插入脚注时遇到问题。这是我的代码:

Set cc = oRange.ContentControls(intCounter)
strOriginalDate = cc.Range.Text

If wrdDoc.ProtectionType <> wdNoProtection Then
    wrdDoc.Unprotect strSheetPassword
End If

If wrdDoc.FormsDesign = False Then
    wrdDoc.ToggleFormsDesign
End If
cc.Range.Text = strCOD
'
' Insert the footnote
'
oRange = wrdDoc.Range(cc.Range.End, cc.Range.End)
oRange.Select
Selection.MoveRight Units:=wdCharacter, Count:=1
Selection.TypeText Text:=" "
With Selection
    With .FootnoteOptions
        .Location = wdBottomOfPage
        .NumberingRule = wdRestartContinuous
        .StartingNumber = 1
        .NumberStyle = wdNoteNumberStyleArabic
        .LayoutColumns = 0
    End With
    .Footnotes.Add Range:=cc.Range, Text:="Case Opening Date changed from " & _
    strOriginalDate & " to " & strCOD & " on " & Date, Reference:=""
    End If
End With

wrdDoc.ToggleFormsDesign
wrdDoc.Protect Type:=wdAllowOnlyFormFields, Password:=strSheetPassword
wrdDoc.Save

当我到达Selection.MoveRight Units:=wdCharacter, Count:=1行时,我收到一条错误消息Object doesn't support this property or method。从本质上讲,我试图移动到控制的末尾,然后在下一步,我试图超越/超出控制范围。

当我注释掉该行及其后面的行时,我最终试图将脚注插入到内容控件中。这在With .FootnoteOptions行失败,可能是因为我使用的内容控件是日期选择器。

1 个答案:

答案 0 :(得分:1)

您是正确的,您无法在内容控件中添加脚注。解决方案正是您要做的事情 - 之后将其放入文档中。问题是您正在尝试使用Selection对象添加它。

由于您已在Document(oRange)的上下文中拥有Range,因此只需直接使用它:

'
' Insert the footnote
'

'Move the oRange to an "insertion point" after the control.
oRange.Start = cc.Range.End + 1
'Collapse it.
oRange.End = oRange.Start
'Add your space.
oRange.Text = " "

With oRange.FootnoteOptions
    .Location = wdBottomOfPage
    .NumberingRule = wdRestartContinuous
    .StartingNumber = 1
    .NumberStyle = wdNoteNumberStyleArabic
    .LayoutColumns = 0
End With

oRange.Footnotes.Add Range:=oRange, Text:="Case Opening Date changed from " & _
                     strOriginalDate & " to " & strCOD & " on " & Date

真的没有理由去选择 - 它只是一个荣耀的范围,还有一个额外的好处,就是做了Word所做的所有烦人的事情,为了你的利益而且#34; ; (比如抓住尾随空间),同时用鼠标突出显示。

我还会注意到你可以省略Reference:="" - 它默认设置为空字符串。您的With块中还有一个浮动End If