Word VBA質問箱 IV

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

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


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

【492】現在の段落番号の取得は? unahama 06/9/18(月) 11:31 質問[未読]
【493】Re:現在の段落番号の取得は? りん 06/9/19(火) 22:06 回答[未読]
【494】Re:現在の段落番号の取得は? unahama 06/9/20(水) 16:57 お礼[未読]

【492】現在の段落番号の取得は?
質問  unahama  - 06/9/18(月) 11:31 -

引用なし
パスワード
   いくつかの段落を持った文章を扱って、最後の段落については処理をしたくないとか、最初だけ処理をしたいとかを下記例のように、for next 内にif--を入れ処理を行なおうとしています。多分初歩的な質問だと思いますが、現在のカーソル位置または選択範囲の段落番号(数値)を取得するにはどうすればよいのでしょうか?

rpara = ActiveDocument.Paragraphs.Count  '段落数
For n = rpara To 1 Step -1
Selection.EndKey Unit:=wdStory 'カーソルを最後に移す

With Selection.Find
  .Forward = False
  .ClearFormatting
  .MatchWholeWord = True
  .MatchCase = False
  .Wrap = wdFindContinue
  .Execute FindText:="東京"
End With
if **** '段落番号が rpara以外であれば
end if
next

【493】Re:現在の段落番号の取得は?
回答  りん E-MAIL  - 06/9/19(火) 22:06 -

引用なし
パスワード
   unahama さん、こんばんわ。
>いくつかの段落を持った文章を扱って、最後の段落については処理をしたくないとか、最初だけ処理をしたいとか

段落毎に検索をかける方法はいかがでしょうか?

段落の最初及び最後を除いて、東京を横浜に置換します。
Sub test()
  Dim pp As Paragraph, JJ As Integer, Jmax As Integer
  Jmax = Application.ActiveDocument.Paragraphs.Count
  '
  For Each pp In Application.ActiveDocument.Paragraphs
   JJ = JJ + 1
   If JJ = 1 Or JJ = Jmax Then
     '最初と最後の段落では何もしない
   Else
     '置換
     With pp.Range.Find
      .Text = "東京"
      .Replacement.Text = "横浜"
      .Execute Replace:=wdReplaceAll
     End With
   End If
  Next
End Sub

【494】Re:現在の段落番号の取得は?
お礼  unahama  - 06/9/20(水) 16:57 -

引用なし
パスワード
   りん さん へ
さっそく解説付きご回答ありがとうございました。テストして思ったとおり動きました。
ppをparagraph で定義して、Each で繰り返し処理をするところに気付きませんでした。(繰り返しはFOR next で数字しかだめと思っていましたので)。簡潔なため他でも応用できそうです。再度ありがとうございました。

▼りん さん:
>unahama さん、こんばんわ。
>>いくつかの段落を持った文章を扱って、最後の段落については処理をしたくないとか、最初だけ処理をしたいとか
>
>段落毎に検索をかける方法はいかがでしょうか?
>
>段落の最初及び最後を除いて、東京を横浜に置換します。
>Sub test()
>  Dim pp As Paragraph, JJ As Integer, Jmax As Integer
>  Jmax = Application.ActiveDocument.Paragraphs.Count
>  '
>  For Each pp In Application.ActiveDocument.Paragraphs
>   JJ = JJ + 1
>   If JJ = 1 Or JJ = Jmax Then
>     '最初と最後の段落では何もしない
>   Else
>     '置換
>     With pp.Range.Find
>      .Text = "東京"
>      .Replacement.Text = "横浜"
>      .Execute Replace:=wdReplaceAll
>     End With
>   End If
>  Next
>End Sub

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