« 「マクロの呼出方法の選択と割付」の紹介 | トップページ | テキスト貼り付け(右クリックとボタン) 修正しました。 »

2008年11月 8日 (土)

タブの削除

タブを削除するためのマクロプログラムです。

●用途
インターネットのhtmlからテキストををコピーすると、ときどきタブの情報までコピーしてしまうことがあります。

たとえば、5文字ごとにタブが設定されているとか、細かく入っていることがあります。

さらに面倒なことに、ワードのレイアウト表示をしているときに、文書上部に表示される「ルーラー」の枠を超えてさらに右側にタブが入っていることもありました。

こういうものは、タブ記号を触れないので、ルーラー上の記号をひとつひとつマウスで選択して削除するという手段がとれません。このようなタブを全て削除するときに使えます。

●工夫
下記のプログラムにも書かれていますが、繰り返し処理の終了の判定方法を工夫しました。

文書中の最終段落かどうかの判定を、これ以上カーソルを下に移動できるか否か?で判定します。

●作った背景と作り方
まず、タブを削除したかったので、「知りたい操作がすぐわかる標準Word2003全機能Bible」の索引から「タブ」の項目で調べました。

P363とP365にヒントが記載されていました。

メニューの書式>タブとリーダー から操作窓が表示されますが、この右下にある「すべてクリア(A)」のボタンを押してタブを削除できます。

こうすることで、短いインターバルで細かく入っているタブをひとつづつマウスで取り除く手間が省けます。

しかし、この場合、カーソルがおかれている段落のタブしか削除されません。

つまり、この「すべてクリア」のボタンでは、文書全体のタブを全て取り除くことはできなくて、段落ごとにタブを削除しないといけないということでした。

そこで、まず、この段落ごとのタブ削除を「マクロの記録」でコードを書き出して、それを全ての段落に対して繰り返し処理をするマクロをつくりました。

●プログラム
画面の更新をオフにしていいないので、カーソルが文書の一番先頭から下に動きながら、段落ごとのタブを削除するのが見えます。

Sub タブ削除()

Dim SS As Long 'カーソル位置の変数 integerではなくlongとした

'文書先頭へカーソルを移動
Selection.HomeKey Unit:=wdStory

'タブ削除の繰り返し処理
Do
    '現在のカーソル位置を変数に格納
    SS = Selection.Start
   
    '全てのタブ情報をデフォルトに戻す(マクロ自動記録による)
    Selection.ParagraphFormat.TabStops.ClearAll
    ActiveDocument.DefaultTabStop = MillimetersToPoints(14.8)

    '段落を下方向に移動
    Selection.MoveDown Unit:=wdParagraph, Count:=1
   
    '最終段落にきたことの確認
    '確認方法:移動したあとのカーソル位置と移動前に格納したSSとを比較
    '理由:最終段落の場合、移動指示してもカーソル位置は変わらない
    If Selection.Start = SS Then Exit Do
Loop
   
End Sub

|

« 「マクロの呼出方法の選択と割付」の紹介 | トップページ | テキスト貼り付け(右クリックとボタン) 修正しました。 »

マクロプログラム」カテゴリの記事

コメント

以下の1行だけではだめでしょうか。

ActiveDocument.Content.ParagraphFormat.TabStops.ClearAll

Ctrl + Aしたあとに「すべてクリア」ボタン押下でもいいんですけどね。

投稿: 青雲 | 2008年11月 9日 (日) 13時54分

青雲さん、

ご教示をどうもありがとうございました。

実は、Ctrl+Aのあとに「タブとリーダー」の操作窓で「すべてクリア」を、試したのですが、そのときのファイルにあったタブは削除ができませんでした。

で、そのときには急ぎでファイルのタブを削除したかったために、わざわざ、このマクロを作った経緯がありました。

手元に、そのファイルがないので、理由はちょっとわかりません。同様のタブに出会ったときに、再度確認して、ブログで報告させていただきます。

ヒントでいただいたコードで、実験用に手入力したタブ情報全て消えました。ありがとうございます。

また、Visual Basic Editorのヘルプで「タブ 削除」で検索したら、

ActiveDocument.Paragraphs.TabStops.ClearAll

というコードも出てきました。教えていただいたものと同様に、文書全体のタブを削除できました。

「標準Word2003全機能Bible」で調べるのもいいけど、VBEのヘルプの活用も大切だとつくづく思いました。

ありがとうございました。

投稿: 管理人 | 2008年11月10日 (月) 00時25分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/43051012

この記事へのトラックバック一覧です: タブの削除:

« 「マクロの呼出方法の選択と割付」の紹介 | トップページ | テキスト貼り付け(右クリックとボタン) 修正しました。 »