3

InsertCrossReference でバグを発見したと思います。ドキュメントの最後のリスト アイテムに from コードを使用し、そのリスト アイテムの後に何もない場合、「実行時エラー '4198' コマンドが失敗しました」というエラーで失敗します。手動で行うと、すべて機能します。あなたは、コードを間違って書いたと思っていますが、そうではありません。確認するために、相互参照を挿入するマクロを記録してから、記録したマクロを実行すると、同じエラーが発生します。

私はこの問題をグーグルで検索し、何人かの人々がそれを提起しているのを見ましたが、a) 最後のリスト項目でのみ失敗し、そのリスト項目の後にドキュメントに何もないことを指摘していません b) 彼らは何も持っていません回避策の返信。

Word 2010 を使用していますが、Word 2013 でも試しましたが、同じことが起こります。

例が必要な場合は、次のように設定します。

これは私の外部参照です

  1. こんにちは
  2. さよなら

ここで、1 と 2 は標準の番号付きリストで、"Bye" の後のドキュメントには何もないので、次のコマンドを実行します。

ActiveDocument.Range(16, 16).InsertCrossReference ReferenceType:="Numbered item", _
ReferenceKind:=wdNumberFullContext, ReferenceItem:="2", InsertAsHyperlink _
:=True, IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "

「さようなら」の後に何もないことに注意してください。リストタイプの有無にかかわらず、新しい行を開始すると、上記のコードが機能します

誰かがこれに対する回避策を持っているなら、私はそれを感謝します

4

1 に答える 1

1

ドキュメントの最後の段落記号の後には何も挿入できません。私は過去にこの問題を抱えていました。私の回避策は、実用的に段落記号を追加することでした.

次のようなもの:

Dim CRRange as Word.Range 'Make a range object to store where the cross reference will go.
set CRRange = ActiveDocument.Range(16,16)

if CRRange.end >= ActiveDocument.Range.End then 'Check to see if we reached the end of the document
    ActiveDocument.Paragraphs.Add Range:=ActiveDocument.Range(ActiveDocument.Range.End -1, ActiveDocument.Range.End -1)
End If

CRRange.InsertCrossReference ReferenceType:="Numbered item", _
    ReferenceKind:=wdNumberFullContext, ReferenceItem:="2", InsertAsHyperlink _
    :=True, IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
于 2015-03-05T13:07:13.000 に答える