編集するためにWordでPDFファイルを開きました(元のWord文書は失われます)。変換中に、テキストの各行と各テーブルセルに余分なスペースが与えられました。もちろん、彼らは私と私のわずかなOCD以外の人を傷つけることはありません。私は末尾の空白が好きではありません。
行末の末尾のスペースを削除するのは簡単ですが(" ^p"
を検索して"^p"
に置き換えます)、検索/置換ダイアログに「テーブルセルマーカーの終わり」の特殊文字がないようです。 Word "regex" engine は anchors もサポートしていないようです。
Google検索で テーブルセルの最後にadd何かを追加する方法に関するこのヒント ("§§§"
のようなものをに追加する予定でした)各セルを検索してから" §§§"
)を簡単に検索/置換しますが、Word 2016では、少なくともドイツ語版のWordでは、スタイル「テーブルセル」が見つかりません。
私が試すことができる他のアイデアはありますか?また、行/テーブルセルの末尾にある1つ以上スペースを削除する方法はありますか?数量詞は、正規表現以外の検索/置換では機能しないようです。
OK、私はWord VBAオブジェクトモデルを掘り下げて、これを思いついた(Microsoft VBScript正規表現5.5が有効になっている):
_Sub TrimCellSpaces()
Dim myRE As New RegExp
Dim itable As Table
Dim C As Cell
myRE.Pattern = "\s+(?!.*\w)"
For Each itable In ThisDocument.Tables
For Each C In itable.Range.Cells
With myRE
C.Range.Text = .Replace(C.Range.Text, "")
End With
Next
Next
End Sub
_
興味深いことに、私の最初の試み(Trim(C.Range.Text)
を使用)ではスペースが削除されませんでしたが、逆に、段落記号が追加されました各セルの終わりに。これに戸惑い、私は同じ結果で正規表現_\s+$
_を試しました。ローカルオブジェクトツリーを調べたところ、テキスト_Note
_を含むセルには実際には_Note \x0d\x0d\x07
_が含まれていることがわかりました( これが当てはまる理由がわかりました )。そのため、セル内の最後のスペースを見つけるために、その奇妙な正規表現を使用する必要がありました...
Tim PietzckerのSubの変更を使用します。ここでは、regExpの代わりにLeft()とTrim()の組み合わせを使用します(また、ActiveDocumentも使用します)。 =の代わりにThisDocument):
Sub TrimCellSpaces()
Dim itable As Table
Dim C As Cell
For Each itable In ActiveDocument.Tables
For Each C In itable.Range.Cells
C.Range.Text = Trim(Left(C.Range.Text, Len(C.Range.Text) - 2))
Next
Next
End Sub
見つけたガイド には答えが含まれているようです:影響を受けるセルにスタイルを割り当てます。
必要に応じて、セルに既にあるスタイルに基づいて、この目的のためだけに新しいスタイルを作成します。その後、前のスタイルに戻るか、新しいスタイルをそのままにしておくことができます。