Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


211 / 308 ツリー ←次へ | 前へ→

【313】Loopの使い方 tootsie 05/6/10(金) 17:00 質問[未読]
【314】Re:Loopの使い方 りん 05/6/19(日) 9:55 回答[未読]
【316】Re:Loopの使い方 tootsie 05/6/30(木) 16:06 お礼[未読]

【313】Loopの使い方
質問  tootsie  - 05/6/10(金) 17:00 -

引用なし
パスワード
   こんにちは。2回目の投稿です。(いまだ勉強をさぼったまま、付け焼刃で日々過ごしている初心者ですが)

ワードでの質問です。

「マクロの記録」を使ってマクロを作りました。それを繰り返して行わせるには、Loopという命令方法があるようですが、その前に「Do While xxxx」または「Do Until xxxx」が必要だというところまでは判明しました。それをいろいろな場所に入れて試したのですが、さっぱりだめです。どこにどのように挿入すればいいか、おわかりでしたらご教授願えませんか。

ちなみに、自動的に作成されたマクロはだいたい次のようなものです。

Sub ANSA()

  Selection.HomeKey Unit:=wdStory
  Selection.Find.ClearFormatting
  With Selection.Find
    .Text = _
      "------------------"
    .Replacement.Text = "^m"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
  End With
  Selection.Find.Execute
  Selection.Delete Unit:=wdCharacter, Count:=1
  Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend
  Selection.Delete Unit:=wdCharacter, Count:=1
  Selection.InsertBreak Type:=wdPageBreak
  Selection.MoveDown Unit:=wdLine, Count:=1
  Selection.Style = ActiveDocument.Styles("見出し 1")
End Sub

「------------------」を検索し、そこから数行を削除、強制改ページを入れてその次の行に「見出し1」を設定するという趣旨です。「------------------」がなくなるまで自動的に繰り返し作業を行うように設定できたらと思っています。Windows2000、Word2000を使用しています。

よろしくお願い致します。

【314】Re:Loopの使い方
回答  りん E-MAIL  - 05/6/19(日) 9:55 -

引用なし
パスワード
   tootsie さん、おはようございます。
>「マクロの記録」を使ってマクロを作りました。それを繰り返して行わせるには、Loopという命令方法があるようですが、その前に「Do While xxxx」または「Do Until xxxx」が必要だというところまでは判明しました。それをいろいろな場所に入れて試したのですが、さっぱりだめです。どこにどのように挿入すればいいか、おわかりでしたらご教授願えませんか。

Execute メソッド (Find オブジェクト)
指定された検索を実行します。検索が正しく実行できた場合、True を返します。
ということなので、TRUEを返すかどうかでLOOPを続けるかどうか判定します
'
Sub ANSA()
  Dim tf As Boolean 'ブール型
  'そのまま使用
  Selection.HomeKey Unit:=wdStory
  Selection.Find.ClearFormatting
  '検索条件設定(そのまま使用)
  With Selection.Find
    .Text = _
      "------------------"
    .Replacement.Text = "^m"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
    '========================
     '繰り返すのはここから
     tf = .Execute '検索実行:成功したらTRUE
     Do While tf = True 'tf = True 間、Do〜Loop間を繰り返す
      Selection.Delete Unit:=wdCharacter, Count:=1
      Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend
      Selection.Delete Unit:=wdCharacter, Count:=1
      Selection.InsertBreak Type:=wdPageBreak
      Selection.MoveDown Unit:=wdLine, Count:=1
      Selection.Style = ActiveDocument.Styles("見出し 1")
      '次を実行
      tf = .Execute
     Loop
    '========================
  End With
End Sub

こんな感じです。

【316】Re:Loopの使い方
お礼  tootsie  - 05/6/30(木) 16:06 -

引用なし
パスワード
   ご教示ありがとうございました。

tfというのは、方程式の代数の記号のように、たぶんtrue とfalseから象徴的に頭文字をとられたのですね。マクロを動かす上では別のアルファベットでもかまわないのですよね。

IT用語辞典で調べたら、「ブール型」というのは「真(true)と偽(false)の2種類の値だけを扱う最も単純な構造の型」とありました。ちょっとだけ分かったような気がしました。

まずは略儀ながらお礼まで。

211 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207139
(SS)C-BOARD v3.8 is Free