web-dev-qa-db-ja.com

表のセルの最後にある末尾の空白を削除します

編集するためにWordでPDFファイルを開きました(元のWord文書は失われます)。変換中に、テキストの各行と各テーブルセルに余分なスペースが与えられました。もちろん、彼らは私と私のわずかなOCD以外の人を傷つけることはありません。私は末尾の空白が好きではありません。

Screenshot

行末の末尾のスペースを削除するのは簡単ですが(" ^p"を検索して"^p"に置き換えます)、検索/置換ダイアログに「テーブルセルマーカーの終わり」の特殊文字がないようです。 Word "regex" engineanchors もサポートしていないようです。

Google検索で テーブルセルの最後にadd何かを追加する方法に関するこのヒント"§§§"のようなものをに追加する予定でした)各セルを検索してから" §§§")を簡単に検索/置換しますが、Word 2016では、少なくともドイツ語版のWordでは、スタイル「テーブルセル」が見つかりません。

私が試すことができる他のアイデアはありますか?また、行/テーブルセルの末尾にある1つ以上スペースを削除する方法はありますか?数量詞は、正規表現以外の検索/置換では機能しないようです。

5
Tim Pietzcker

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_が含まれていることがわかりました( これが当てはまる理由がわかりました )。そのため、セル内の最後のスペースを見つけるために、その奇妙な正規表現を使用する必要がありました...

2
Tim Pietzcker

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
1
Roman Tarasiuk

見つけたガイド には答えが含まれているようです:影響を受けるセルにスタイルを割り当てます。

必要に応じて、セルに既にあるスタイルに基づいて、この目的のためだけに新しいスタイルを作成します。その後、前のスタイルに戻るか、新しいスタイルをそのままにしておくことができます。

0
Speedbird186