- 締切済み
ワードで文頭にタブを一括で挿入するには?
こんにちは。ワードで作業しています。特定の文頭にtabを一括で挿入するマクロが組めたらいいなぁと思い投稿しました。 ](片カッコ)以降の最初の文字列にタブを挿入する、という作業なのですが、毎回探してはタブを挿入しています。下に例を示します。申し訳ございませんがご協力していただけないでしょうか? 例 [0001] 000 0000000 000000000 0000000 00 00000000-00000 0000000 ↓ [0001] 000 0000000 000000000 0000000 00 00000000-0000
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 このマクロは、正規表現で括弧のある文字を探しております。 ですから、[数字]改行 となっていることが条件です。(]の後に空白はあってもよい) 標準モジュールへの取り付け方 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
- norosi
- ベストアンサー率26% (430/1614)
マクロではありませんが・・・・ 置換えでできると思いますが(Word2003で検証しました) 編集の置換えで検索する文字列に「 ] 」を入れオプションをクリック あいまい検索のチェックを外し特殊文字をクリック 一番上に「段落記号」がありますのでこれをクリックこれで「 ] 」の後ろに「 ^p 」が入り、こう「 ]^p 」なります。 置換後の文字列に上記をコピーして持ってきて貼り付けます、その後特殊文字をクリックして段落文字をクリック これで置換え後の文字列が「 ]^p^t 」となります。 これで置換え実行でご希望通りになると思います。
お礼
>norosi様 ご回答ありがとうございます。特殊文字を使うとこんなに便利に検索、置換できたんですね。驚きです。「できる~」シリーズの本(ワード版)を読んでも書いてない内容なので、大変助かりました。
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録を手がかりに、やって見ました。 必ず置換したい文字がある、文章範囲を範囲指定しておいて(つい忘れやすい)、下記を実行してみてください。 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は小生勉強中で、これ以上質問に答えられないかも知れないが、上記でうまくいけば良いが。
お礼
>imogasi様 お忙しい中、ご回答ありがとうございます。マクロはエクセルで簡単な計算くらいしか組んだことがなく、悪戦苦闘しておりました。さっそく使わせていただきます。ありがとうございました。
お礼
>Wendy02様 ご回答ありがとうございます。Visual Basic Editor 画面はあまり使ったことがなく、新しい発見でした。質問にお時間をかけてもらって、ありがとうございました。さっそく使わせていただきます。(ワードもいろんな機能が充実しているんですね。)