重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Word2019とWindows10です。

文書を選択して[中央揃え]のアイコンをクリックすると、
各行の前後ろの空白が除去されます。
この処理を[マクロの記録」で記録すると、下記のマクロができるのですが、

Sub Macro2()
'
' Macro2 Macro
'
'
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub

このマクロを実行すると、中央揃えはされますが、空白の除去がされません。
行の前と後ろの空白をマクロで除去するには、
どうすればいいのでしょうか。

A 回答 (2件)

組み込み済みのコマンド類の実行に関して、[マクロの記録]をしたり、


[コマンドマクロ]と呼ばれてるものを直接VBEに書き出すようにしても、
同じ動作をしないことも多いです。
http://tanimoto.to/comp/WordCommandMacrosList.html
段落の[中央揃え]である"CenterPara"のコマンドも同じです。

そこで、コマンド名を直接呼び出すマクロを作成することで、行前後に
ある空白を削除する動作をするようにします。

Sub 中央揃えで空白削除()
'
' 段落の中央揃えのコマンドを呼び出します。
'
 Application.Run MacroName:="CenterPara"
End Sub

もしも、両端揃えに戻したいのなら、End Subの前に
  Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
を追加すれば、中央揃え後に両端揃えに戻ります。


前後の空白を削除するマクロを知りたいなら、以下のマクロが参考に
なると思います。このマクロでは段落にある文字列に設定した書式が
解除されるのでお勧めはしません。
あくまで参考としてのマクロです。

Sub 段落の前後にある空白を削除()
 Dim myRange As Range
 Dim MyString, TrimString As String

'カーソル位置の段落をmyRangeへ設定
 Set myRange = Selection.Range
 myRange.Expand Unit:=wdParagraph
'改行記号を除外
 With myRange
  .End = .End - 1
 End With

 MyString = myRange
 TrimString = Trim(MyString)
 myRange = TrimString

' 段落配置が必要ならこちら↓のコメントブロックを外す
' Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

 Set myRange = Nothing
End Sub
    • good
    • 0
この回答へのお礼

enunokokoro様、大変ありがとうございます。
「中央揃えで空白削除」と「両端揃えに戻したいのなら」
で、現在のところは十分ですが、いずれは
「前後の空白を削除するマクロ」も必要になるかも
しれません。
分かりやすい説明、大変ありがとうございました。

お礼日時:2020/08/23 00:14

勘違いされていますが、


中央揃えとは表示位置を調整しているだけで、前後に空白をしているわけではありません。

左寄せにするマクロを作りたいのであれば
Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
にすればいいだけです。
    • good
    • 0
この回答へのお礼

nekorondaさん ありがとうございます。
質問があいまいで申し訳ありませんでした。
やりたかったのは、行(文?)の先頭と最後の空白を
一気に除去することでした。

お礼日時:2020/08/22 16:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!