• 締切済み

ワードで文頭にタブを一括で挿入するには?

こんにちは。ワードで作業しています。特定の文頭にtabを一括で挿入するマクロが組めたらいいなぁと思い投稿しました。  ](片カッコ)以降の最初の文字列にタブを挿入する、という作業なのですが、毎回探してはタブを挿入しています。下に例を示します。申し訳ございませんがご協力していただけないでしょうか? 例 [0001] 000 0000000 000000000 0000000 00 00000000-00000 0000000 ↓ [0001]    000 0000000 000000000 0000000 00 00000000-0000

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 このマクロは、正規表現で括弧のある文字を探しております。 ですから、[数字]改行 となっていることが条件です。(]の後に空白はあってもよい) 標準モジュールへの取り付け方 Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、 Alt + Q で、画面を閉じます。 Alt + F8 で、「InsertTabAfterParences」を選んで実行してみてください。 なお、こちらは、Word 2003で開発しています。 うまく行かない場合は、もう一度、検索文字を詳細に教えてください。 '-------------------------------------------------------- Sub InsertTabAfterParences()  'Ver.2650674.001  Dim objRegExp As Object  Dim myPattern As Variant  Dim ReplaceWords As String  Dim Matches As Object  Dim Match As Object  Set objRegExp = CreateObject("VBscript.RegExp")  '  Selection.HomeKey Unit:=wdStory  Selection.EndKey Unit:=wdStory, Extend:=wdExtend  myPattern = "\[\d+\]\s*\n+" '検索文字  With objRegExp   .Global = True   .IgnoreCase = False   .Pattern = myPattern   If .Test(Selection) Then    Set Matches = .Execute(Selection)    For Each Match In Matches     myReplace Match.Value    Next Match   End If  End With  Selection.HomeKey Unit:=wdStory  MsgBox "終了", 64  Set objRegExp = Nothing End Sub Private Sub myReplace(SearchWd As String)  Selection.Find.ClearFormatting  Selection.Find.Replacement.ClearFormatting  With Selection.Find   .Text = SearchWd   .Replacement.Text = SearchWd & vbTab   .Forward = True   .Wrap = wdFindContinue   .Format = False   .MatchCase = False   .MatchWholeWord = False   .MatchByte = True   .MatchAllWordForms = False   .MatchSoundsLike = False   .MatchWildcards = False   .MatchFuzzy = False  End With  Selection.Find.Execute  Selection.MoveStart Unit:=wdLine  Selection.Range.InsertBefore vbTab  'タブ挿入 End Sub

gvfhxcg2
質問者

お礼

>Wendy02様 ご回答ありがとうございます。Visual Basic Editor 画面はあまり使ったことがなく、新しい発見でした。質問にお時間をかけてもらって、ありがとうございました。さっそく使わせていただきます。(ワードもいろんな機能が充実しているんですね。)

  • norosi
  • ベストアンサー率26% (430/1614)
回答No.2

マクロではありませんが・・・・ 置換えでできると思いますが(Word2003で検証しました) 編集の置換えで検索する文字列に「 ] 」を入れオプションをクリック あいまい検索のチェックを外し特殊文字をクリック 一番上に「段落記号」がありますのでこれをクリックこれで「 ] 」の後ろに「 ^p 」が入り、こう「 ]^p 」なります。 置換後の文字列に上記をコピーして持ってきて貼り付けます、その後特殊文字をクリックして段落文字をクリック これで置換え後の文字列が「 ]^p^t 」となります。 これで置換え実行でご希望通りになると思います。

gvfhxcg2
質問者

お礼

>norosi様 ご回答ありがとうございます。特殊文字を使うとこんなに便利に検索、置換できたんですね。驚きです。「できる~」シリーズの本(ワード版)を読んでも書いてない内容なので、大変助かりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

マクロの記録を手がかりに、やって見ました。 必ず置換したい文字がある、文章範囲を範囲指定しておいて(つい忘れやすい)、下記を実行してみてください。 Sub Macro24() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "]" & Chr(11) .Replacement.Text = "]" & Chr(11) & "^t" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub をやってみてください。 ](かぎカッコ)と↓(改行だけの文字、Char(11)にあたるよう) が続けてある場所を見つけ ]↓ ーー> ]↓+タブ(ワードでは^t)に、選択範囲の終わりまで、全て置換しています。 ーー ワードCVBAは小生勉強中で、これ以上質問に答えられないかも知れないが、上記でうまくいけば良いが。

gvfhxcg2
質問者

お礼

>imogasi様 お忙しい中、ご回答ありがとうございます。マクロはエクセルで簡単な計算くらいしか組んだことがなく、悪戦苦闘しておりました。さっそく使わせていただきます。ありがとうございました。

関連するQ&A

専門家に質問してみよう