人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【MS Word 2003 マクロ】
以下の条件で、文章整形マクロをくみたいと思っています。

不要な行
必要な行
不要な行
必要な行
・・・・・

上記のように不要な行と必要な行が交互に並んでいます。
この中から不要な行だけを削除するマクロを教えてください。

できるだけスマートで柔軟なものをよろしくお願いします。

# 「行」とは文頭 (=直前に改行がある) から改行までを意味します。
# 不要な行と必要な行の間には、1 つの改行を除いて何もありません。
# Win XP、MS Word 2003 です。

●質問者: にぎたま
●カテゴリ:コンピュータ
✍キーワード:MS WIN Word XP スマート
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● airplant
●100ポイント ベストアンサー

不要な行と必要な行の定義を次のように理解してマクロを作りました。

「スマートで柔軟」かどうかは、わかりませんが、行単位で好きな行の処理が自由にできると思います。

あと、いい点は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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ