アプリ版:「スタンプのみでお礼する」機能のリリースについて

Wordマクロ初心者です。仕事でWordマクロを使うようになったのですが、行き詰まっており、分かる方がいらっしゃいましたら教えてください。

複数の段落があるWord(文書のみで図形やグラフはない)で、段落毎にインデントとぶら下げインデントを設定したい。また、段落毎の先頭の文字を認識して文字の種類によってインデントとぶら下げインデントの文字数を変えたい。
例えば、先頭の文字が1や2などの数字で始まる段落についてはインデント1文字、ぶら下げインデント1文字。先頭の文字がカッコ『 ( 』で始まる段落についてはインデント2文字、ぶら下げインデント2文字。アなどのカタカナで始まる段落についてはインデント3文字、ぶら下げインデント3文字。といったような感じの設定をしたいです。
また段落数は文書の種類により増減するため、段落数が増減しても全文のインデントが設定できるようにしたいです。

そもそもWordマクロでできるのかも分からないのですが、分かる方がいらっしゃいましたら、よろしくお願いいたしますm(._.)m

A 回答 (1件)

Wordマクロに限らず苦手なので方法を探すのも一苦労だったけど、


一応は可能なマクロを提示できるようになりました。
(Like演算子に気が付くまで、かなり遠回りで調べてた)

とりあえず、以下のマクロを試してみてください。
(括弧は半角左丸括弧のみにしています)

Sub 先頭の文字別でインデント()
Dim para As Paragraph
Dim s1, s2, s3 As Variant
Dim i As Long

' 先頭文字の種類をワイルドカードで配列に設定
s1 = Array("[0-9]", "(", "[ァ-ヾ]")
' インデントを配列に設定
s2 = Array("1", "2", "3")
' ぶら下げインデントを配列に設定
s3 = Array("-1", "-2", "-3")

For i = 0 To UBound(s1)

For Each para In ActiveDocument.Paragraphs
 With para
  If .Range.Characters(1) Like s1(i) Then
   .CharacterUnitLeftIndent = s2(i)
   .CharacterUnitFirstLineIndent = s3(i)
  End If
 End With
Next

Next i

End Sub
    • good
    • 0
この回答へのお礼

助かりました

enunokokoroさん
早速ご回答いただき、ありがとうございます❗
先ほど試してみたら、思いどおりのインデント設定ができました‼️
ワイルドカードはインターネットでいろいろ見ていましたが、いまいち使い方が分からなかったのですが、今回のご回答でよく理解できました( ´ー`)
正直、今回のインデント設定をマクロ化するのは難しいのかなと諦めかけていましたが質問してみて良かったです。Wordマクロは奥が深いですね。
これで仕事が大幅に前進しました。本当に本当にありがとうございました❗感謝致します。
初心者なので、またいろいろと質問することがあるかもしれませんが、よろしくお願いいたします
m(._.)m

お礼日時:2018/12/26 09:30

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

このQ&Aを見た人はこんなQ&Aも見ています