以下の条件で、文章整形マクロをくみたいと思っています。
不要な行
必要な行
不要な行
必要な行
・・・・・
上記のように不要な行と必要な行が交互に並んでいます。
この中から不要な行だけを削除するマクロを教えてください。
できるだけスマートで柔軟なものをよろしくお願いします。
# 「行」とは文頭 (=直前に改行がある) から改行までを意味します。
# 不要な行と必要な行の間には、1 つの改行を除いて何もありません。
# Win XP、MS Word 2003 です。
不要な行と必要な行の定義を次のように理解してマクロを作りました。
「スマートで柔軟」かどうかは、わかりませんが、行単位で好きな行の処理が自由にできると思います。
あと、いい点はWordファイルにマクロを書かずに、外から扱えるというところですかね。
行の定義: 行頭から始まって改行で終わる(長さ制限なし)正規表現で「^.*$」と同等
不要な行: 奇数番目の行
下記をxxx.vbsという名前で保存して、対象のWordファイルをドラッグ&ドロップでxxx.vbsに食わせてみてください。別ディレクトリでも複数個でもOKです。
Option Explicit Dim objWord, objDoc Dim strArg, myPara, i Set objWord = CreateObject("Word.Application") objWord.Visible = True For Each strArg In WScript.Arguments Set objDoc = objWord.Documents.Open(strArg) i = 0 For Each myPara In objDoc.Paragraphs myPara.Range.Select ' MsgBox i If i Mod 2 = 0 Then objWord.Selection.Delete End If i = i + 1 Next objDoc.Save objWord.Documents.Close Set myPara = Nothing Set objDoc = Nothing Next objWord.Quit
なお、Wordのデフォルト設定の「言語データを埋め込む」をオフにしておくことをお奨めします(「ツール」→「オプション」→「保存タブ」右上付近)。
このオプションがオンだと、保存時に「マイクをオフしておいてください」などのメッセージが出てくることがあります。
いつも丁寧にありがとうございます。
上記を参考にして以下のものを作りました。
これをワードのSTARTUPフォルダに入っている自作の.dot に追加して、起動時に読み込み、独自のメニューバーから実行できるようにしてみました。校正ツールの一環ってかんじです。
.vbs で保存してドラッグアンドドロップができるとは驚きです。
今後はその方向も作ってみようと思います。
Sub hoge()
Dim myPara As Paragraph
Dim i As Long
i = 1
For Each myPara In ActiveDocument.Paragraphs
myPara.Range.Select
If i Mod 2 = 0 Then
myPara.Range.Delete
End If
i = i + 1
Next
End Sub