0

ニーズに合わせて調整しているサードパーティの VBA モジュールがあります。私たちがやろうとしているのは、Word ドキュメントのフッターでファイル パスを検索し、そのファイル パスを (サード パーティが生成した) ドキュメント ID に置き換えることです。

コードは実際には現在非常に単純であり、ほとんど機能します。ドキュメント フッターのファイル パスを必要なドキュメント ID で上書きしても問題はありませんが、現在、コードはWord ドキュメント フッターのすべてのテキスト (ページ番号、ドキュメントを書いた人のイニシャルなど) を上書きしています。ファイルパスが置き換えられました。

以下のコードのどこが間違っているのか、誰か提案できますか? コードは現在、既存の ID を検索します。それが見つからなくてもファイル パスが見つかった場合は、上書きを試みます。それ以外の場合は、ドキュメント ID を最初からドキュメントに書き込みます。

Set tSearch = doc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Find
tSearch.Text = idStr
If Not tSearch.Execute() Then
    'Current ID wasn't found; look for and replace an older one.
    tSearch.MatchWildcards = True
    tSearch.Text = "?:\*"
    If Not tSearch.Execute(ReplaceWith:=idStr) Then
        doc.Sections(1).PageSetup.DifferentFirstPageHeaderFooter = False
        doc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Text = idStr
        doc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Font.Size = 8
    End If
End If
4

1 に答える 1

0

まず、検索はおそらく常に失敗します。検索テキストは次のようにする必要があります。

tSearch.Text = "?:\\* "

バックスラッシュは制御文字であり、偶然にもバックスラッシュであるリテラル文字でマークする必要があります。また、* は真の「すべてを見つける」記号ではありませんが、「すべてを見つけるまで」と考えてください。この場合、スペース文字ですが、ピリオド、行末などの可能性があります。

于 2012-07-02T16:12:19.220 に答える