Word VBA質問箱 IV

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

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


11 / 45 ページ ←次へ | 前へ→

【716】Re:文字検索
回答  H. C. Shinopy  - 12/1/15(日) 22:42 -

引用なし
パスワード
   残念ながら簡単には行かないようです。
選択範囲の文字の位置を取り込んで、
Ifステートメントで範囲内かどうか判断しながら処理する方法はありますが、
どうしても範囲外の文字列を検索してしまいますし、
Ifステートメントが悪さをするのか下記の「二重検索」マクロより処理時間が長くなります。

私の場合は、まず正規表現で検索して、
再びFindで検索してカーソルを移動させ書き換えする方法でやっています。
(正規表現のメタキャラクタ(\|()[]{}^$*+?.など)に該当する文字列を検索する場合は、
その前に「\」を付ける必要があるので注意!)

下記のマクロは選択した範囲内の文字列で、
例えば「cx」(あるいは「c^」)・「a_」を検索して、
各々「^」の付いたc、「^」の付いたaに置換する処理です。

また、位置については下記マクロの
Dim myRangeStart As Word.Range

Set myRangeStart = Selection.Range ' 検索開始点を取得する。

myRangeStart.Select ' 検索開始点に戻る。
を見て下さい。
以下、マクロ。

Sub MyFindReplace()
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 Rem 選択範囲内 文字列検索置換処理
 Rem 作譜:Hitrock Camellia Shinopy
 Rem 言語:Word VBA
 Rem 機能...
 Rem  1. 選択した範囲内で、指定した文字列を検索し置換する。
 Rem 注記...
 Rem  1. 正規表現で検索した文字列を再度Selection.Findプロパティで検索。
 Rem  2.
 Rem 履歴...
 Rem  第01版:2010/09/30:作成。
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 Dim myRegExp As Object ' VBScript_RegExp_55.RegExp
 Dim myMatches As Object ' MatchCollection
 Dim myMatch As Object ' Match
 Dim myTextReplace As String
 '
 Dim myRangeStart As Word.Range
 '
 Dim i As Long
 Dim c As Long
 Dim myStatusBar As String
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 '
 If Len(Selection.Range.Text) <= 0 Then
  Rem 範囲を指定しなかった場合は、カーソルより後で文書の末尾まで選択する。
  Selection.EndKey Unit:=wdStory, Extend:=wdExtend
 End If
 '
 Set myRegExp = CreateObject("VBScript.RegExp") ' New VBScript_RegExp_55.RegExp
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 '
MyFindReplaceSubEntry:
 With myRegExp
  .Pattern = "[cghjsu][x\^]|[aeiou]_" ' パターンを設定
  .IgnoreCase = False ' 大文字と小文字を区別する
  .Global = True ' 文字列全体を検索
  '
  If .Test(Selection.Range.Text) = False Then
   MsgBox "該当する文字列がありません。"
   Selection.Collapse wdCollapseStart
   GoTo MyFindReplaceSubExit
  End If
  '
  i = 0
  Set myMatches = .Execute(Selection.Range.Text)
  Selection.Collapse wdCollapseStart
  Set myRangeStart = Selection.Range ' 検索開始点を取得する。
  '
  For Each myMatch In myMatches
   With Selection.Find
    .Text = myMatch.Value
    .Execute
   End With
   '
   Select Case myMatch.Value
    Case "cx": myTextReplace = ChrW(265)
    Case "c^": myTextReplace = ChrW(265)
    Case "a_": myTextReplace = ChrW(226)
   End Select
   '
   Selection.TypeText myTextReplace ' 置き換え。
   '
   i = i + 1
   c = i * 100 \ myMatches.Count
   myStatusBar = Format(c, "##0") & "% " & i & "/" & myMatches.Count & "件"
   Application.StatusBar = "MyFindReplace" & ":処理中" & " " & myStatusBar
   DoEvents
  Next ' myMatch
 End With
 '
 myRangeStart.Select ' 検索開始点に戻る。
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 '
MyFindReplaceSubExit:
 Set myRegExp = Nothing
 Set myMatches = Nothing
 Set myRangeStart = Nothing
 Application.StatusBar = "MyFindReplace" & ":" & "処理完了!"
End Sub ' MyFindReplace *----*----*  *----*----*  *----*----*  *----*----*

[End]
・ツリー全体表示

【715】文字検索
質問  ゆい  - 12/1/15(日) 18:04 -

引用なし
パスワード
   こんにちは
Word-VBA超初心者です。(Excel-VBAはそれなりに...)

Findを用いた文字検索において、位置情報を取得することは出来ますか?
  
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "■"
        .Replacement.Text = "■"
        .Wrap = wdFindStop
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    位置 = Selection.Start

このような感じで、「位置」に位置情報を格納したいのですが、なぜだか、格納される時と格納されない(1が入っている)時があります....

どなたか、正しい方法をお教え頂けないでしょうか?

また、Findを用いる際、選択範囲(マウスでドラッグして黒く反転させた範囲)のみ実行させる方法はござますか?今組んでいるマクロでは、選択範囲は無視されて、ドキュメントの最後まで検索してしまいます。

宜しくお願いいたします。
・ツリー全体表示

【714】Re:ドキュメント内検索でヒットした箇所を...
発言  りる  - 11/3/13(日) 16:00 -

引用なし
パスワード
   田吾作 さん、こんにちは。

>こちらを閉じた時刻
>2010/06/05(土) 22:23
>
>あちらの投稿時刻
>2010/06/05(土) 22:57:35

>これが何故にマルチになるのか理解できません。
時刻まではみてませんでした。
すみません。
・ツリー全体表示

【713】Re:ドキュメント内検索でヒットした箇所を...
発言  田吾作  - 11/2/27(日) 0:09 -

引用なし
パスワード
   こちらを閉じた時刻
2010/06/05(土) 22:23

あちらの投稿時刻
2010/06/05(土) 22:57:35

これが何故にマルチになるのか理解できません。
意味がわかって使っている?
・ツリー全体表示

【712】Re:ドキュメント内検索でヒットした箇所を...
発言  りる  - 11/2/17(木) 10:55 -

引用なし
パスワード
   ドサンピン さん、こんにちわ。

>同じような疑問を持って調べていたらここにたどり着きました。
>なぜ閉じてしまったのでしょう。経緯が分かりません。
マルチ先である程度納得のいく回答をもらったからでしょうね。
h t t p : //efcit.co.jp/office2000/exqalounge.cgi?print+201006/10060002.txt
・ツリー全体表示

【711】Re:ドキュメント内検索でヒットした箇所を...
発言  ドサンピン  - 11/2/12(土) 12:37 -

引用なし
パスワード
   ▼田吾作 さん:
>閉じます。
>お騒がせしました。

同じような疑問を持って調べていたらここにたどり着きました。
なぜ閉じてしまったのでしょう。経緯が分かりません。
自己解決であればその内容を書いていただきたかったです。
・ツリー全体表示

【710】Excel VBAからのWord置換
質問  とも  - 10/11/25(木) 23:02 -

引用なし
パスワード
   質問させてください。よろしくお願いします。

エクセルVBAからマクロを実行し、ドキュメントファイル名:テキスト.docに含まれる“昭和”の文字を“平成”に置換したいのです。(エクセルシートのA1セルには“昭和”の文字列が格納)

下記、マクロでは Excel2003 & Word2003 では実行されるのですが、Excel2007 & Word2007(OS:WindowsVist) ではエクセルが停止してしまいます。
これを回避する方法等があれば、教えて頂きたく宜しくお願いします。

Sub Macro()

Dim 修正前 As String
Dim 修正後 As String
Dim Wdoc as Word.Document

修正前 = "昭和"
修正後 = Range("A1").Value  '* 平成 *

Set Wdoc = GetObject("C:\My_desktop\文章\テキスト.doc")

With Wdoc.Content.Find
   .Text = 修正前
   .MatchByte = True
   .Format = False
   .Replacement.Text = 修正後
   .Execute Replace:=wdReplaceAll
end With

Set Wdoc = Nothing

End Sub
・ツリー全体表示

【709】Re:Wordのコメントの対象位置を抽出したい
回答  りる  - 10/11/22(月) 15:40 -

引用なし
パスワード
   雛 さん、こんにちわ。

>本文中に挿入されているコメントの内容は抽出できるのですが、
>それが何ページの何段目といった情報がどうしてのわかりません。

ScopeでコメントのRangeを取得できるので、その位置情報をInformationで確認します。

Sub Macro1()
  Dim obj As Comment
  For Each obj In ActiveDocument.Comments
    With obj.Scope
      MsgBox .Information(wdActiveEndPageNumber) & "ページ" & _
          .Information(wdFirstCharacterLineNumber) & "行" & _
          .Information(wdFirstCharacterColumnNumber) & "桁", _
          vbInformation, obj.Index & " : " & .Text
    End With
  Next
End Sub
・ツリー全体表示

【708】Wordのコメントの対象位置を抽出したい
質問   E-MAIL  - 10/11/17(水) 22:56 -

引用なし
パスワード
   本文中に挿入されているコメントの内容は抽出できるのですが、
それが何ページの何段目といった情報がどうしてのわかりません。
方法はありますか?
・ツリー全体表示

【707】お礼
お礼  ゆう  - 10/10/31(日) 23:12 -

引用なし
パスワード
   ▼りる さん:

質問に答えてくださってありがとうございます。

文字単位ではなく行単位で考えるというのは
目からウロコでした!

こんなに早く回答がもらえると思っていなかったので
とてもうれしいです。ありがとうございます。

書いていただいたもので作ってみようと思います。

結果はまたご報告させてください。

まずはお礼まで。
・ツリー全体表示

【706】Re:文書の最後の文字(改行、改ページ以外...
回答  りる  - 10/10/30(土) 11:25 -

引用なし
パスワード
   ゆう さん、こんにちは。
>題名のとおりなのですが、ワードで作った文書の
>最後の文字(ただし、改行、改ページ以外の文字)が
>入力されているページが何ページなのかを調べる
>マクロを作ろうとしています。
>
h t t p://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=651;id=word
これを応用して、

Sub Test()
  Dim tp, objR As Rectangle, LL As Long, Lmax As Long, PP As Long, s1 As String
  s1 = "なかった"
  With Application.ActiveWindow
   tp = .View.Type '元のビュー
   '表示→印刷レイアウト(違っている場合は一旦変更)
   If tp <> wdPrintView Then .View.Type = wdPrintView
   PP = .Panes(1).Pages.Count '最後のページ
   Do While PP >= 1
     Set objR = .Panes(1).Pages(PP).Rectangles.Item(1)
     Lmax = objR.Lines.Count
     '下からループして、改行コードのみではないところを探す
     '  → 何か字が入っている行
     For LL = Lmax To 1 Step -1
      With objR.Lines.Item(LL).Range
       If Len(.Text) > 1 Then '改行のみの行以外を探す
         '見付けたら抜ける
         s1 = "最後は" & PP & "ページの" & LL & "行目"
         Exit Do
       End If
      End With
     Next
     PP = PP - 1
   Loop
   If tp <> .View.Type Then .View.Type = tp '元のビュー
  End With
  '結果
  MsgBox s1, vbInformation, "改行・改ページ以外の文字の位置"
End Sub
文字単位ではなく、行単位でみるという考え方もあります。
・ツリー全体表示

【705】文書の最後の文字(改行、改ページ以外)が...
質問  ゆう  - 10/10/27(水) 11:30 -

引用なし
パスワード
   題名のとおりなのですが、ワードで作った文書の
最後の文字(ただし、改行、改ページ以外の文字)が
入力されているページが何ページなのかを調べる
マクロを作ろうとしています。

やりたい作業としては、

1.文書末にジャンプする。
2.文書末に入力されている文字を調べる。
3.文書末に入力されている文字が
   改行、改ページ以外だったら、ページ番号を取得し終了。
   改行、改ページだったら、1つ前の文字を調べる。
※ 改行、改ページ以外の文字になるまで1つ前の文字を調べることを繰り返す


文書末にジャンプする方法はわかりましたが、
カーソル位置の文字が改行、改ページ以外かどうかを調べる方法がわからず、
困っています。わかる方、教えてください。

また、上記の方法以外で、改行、改ページ以外の最後の文字が入力されている
ページ数を取得する方法がありましたら、それもぜひ教えてください。

よろしくお願いします。
・ツリー全体表示

【704】Re:塗りつぶしされた文字の検索を行いたい
発言  りる  - 10/9/8(水) 20:16 -

引用なし
パスワード
   Alfa さん、こんばんわ。
>開いている文書内の塗りつぶし文字を検索したいのですが、
あまりWordを使わないので塗りつぶし文字というのがよくわからず、Wd2003では見つけられないのですが、蛍光ペンのことでしょうか?

Sub Macro1()
  With Selection.Find
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
    .Execute
  End With
End Sub

蛍光ペンを検索したのを記録したらこんな風になりました。
カーソル位置から後ろで一つ見つけたらハイライトしていました。
Loopで繰り返せば全部取得できると思います。

違っていたら、Wordのバージョンや塗りつぶしの設定方法などを書いてもう一度質問してみてください。
・ツリー全体表示

【703】塗りつぶしされた文字の検索を行いたい
質問  Alfa  - 10/9/8(水) 18:58 -

引用なし
パスワード
   はじめて書込みします。
開いている文書内の塗りつぶし文字を検索したいのですが、
キーワードがないと検索ができません。
キーワードを入れずに塗りつぶし文字を検索できませんか?
宜しくお願いします
・ツリー全体表示

【702】Re:WORDマクロの解説本 追加情報
回答  H. C. Shinopy  - 10/7/12(月) 20:09 -

引用なし
パスワード
   西上原 裕明:著『作って簡単・超便利! Wordのマクロ実践サンプル集』

技術評論社:刊
2010年8月5日発行(既に店頭販売中)。
Word 2010/2007/2003/2002対応。
1880円+税

Part1 「記録マクロ」を使ってみよう
1-1 操作の内容を「記録」してみよう
 マクロの記録を開始する
 記録したい操作を実行する
 マクロの記録を終了する
1-2 記録したマクロを実行してみよう
 記録した操作を取り消し,マクロで実行してみる
1-3 記録したマクロの中身を見てみよう
 Visual Basic Editorで記録マクロの中身を確かめる

Part2 VB Editorを使ってみよう
2-1 VB Editorを使ってみよう
 WordとVB Editor間の行き来はショートカットキーが便利
 マクロ活用には[開発]タブが便利(2007/2010)
 VB Editorはこうなっている
 最初にやっておきたいオプション設定
2-2 知っておきたいマクロの書き方
 マクロの記入場所を作る
 マクロ名の決まりごと
 何でも書ける「注釈記号」
 長い行は「継続行」で折り返す
 複雑な構造はインデントと行空けでわかりやすく
2-3 知っておきたいマクロの基礎知識
 処理の対象は「オブジェクト」
 オブジェクトの要素を表す「プロパティ」
 オブジェクトを処理する「メソッド」
 コードをわかりやすくする「組み込み定数」
 「オブジェクトブラウザ」を使ってみる
 マクロの処理を楽にする「変数」
 同じ処理を繰り返す「For〜Next」文
 同種のオブジェクトの処理に便利な「For Each In〜Next」文
 繰り返しを柔軟に処理できる「Do〜Loop」文
 条件によって処理を変える「If」文
 状態によって処理を選択する「Select Case」文
 ループを途中で抜け出す「Exit For」「Exit Do」「End」
 記述の負担を減らし,速度を向上させる「With文」
 決まったデータに名前を付けて利用する「Const」
2-4 簡単なマクロを作り,テストしてみよう
 短いマクロを入力してみる-1
 短いマクロを入力してみる-2
 VB Editorからマクロを実行する
 VB Editorでマクロの動作を1行ずつ確かめる
 「ブレークポイント」を活用する
 「ローカルウィンドウ」を活用する
 「ウォッチウィンドウ」を活用する
 「イミディエイトウィンドウ」を活用する
 よくありがちな記述ミス
 それでも起こるエラーへの対処
 マクロが止まらない!?〜急ブレーキのかけ方
2-5 マクロの「ヘルプ」を活用しよう
 VB Editorのヘルプを呼び出す
 マクロの中身からヘルプを逆引きする
 組み込み定数を調べる

Part3 マクロ用のテンプレートを作って活用しよう
3-1 マクロ用のテンプレートを用意する
 テンプレートを既定の場所に保存する
 【コラム】テンプレート間で[標準]モジュールをコピーする
 Wordのセキュリティ設定を確かめる
 テンプレートを「アドイン」する
3-2 アドインテンプレートのマクロを使う
 マクロを一覧から実行する
 マクロにショートカットキーを割り当てる
 マクロにボタンを割り当てる(2002/2003)
 マクロをクイックアクセスツールバーで使う(2007/2010)
 【コラム】テンプレートのプロジェクト名を短くする
 Wordにタブとボタンを登録する(2010)
3-3 独自のタブとボタンを作る(2007/2010)
 テンプレートにタブを作り,マクロをボタン化する手順
 ボタンに応答するマクロを作る
 「customUI」フォルダと「customUI.xml」ファイルを作る
 「customUI」フォルダをテンプレートに組み込む
 「customUI」ファイルを参照するしかけを作る

Part4 簡単マクロ事例集
文字処理
 カーソル位置から行末まで削徐する
 蛍光ペンの色を「白色」に置換する
 下線の語句だけ別文書に書き出す
 【コラム】SelectionとRange
 半角のカタカナを全角に変換する
 英字,数字を半角に変換する
 英大文字の略号だけを全角に変換する
 アラビア数字を漢数字に変換する
 数字を桁区切りカンマ形式にする
 小数点以下を四捨五入する
 2桁の数字だけ縦中横文字に置換する
 【 】で囲まれた文字を割注に変換する
 割注をまとめて解除し【】で囲む
段落処理
 空白行をまとめて削除する
 スペースを字下げインデントに変える
 指定文字数で折り返す
 【コラム】InputBoxとMsgBox
 強制改行を解除して段落をまとめる
 ドロップキャップを一括設定・解除する
 番号付き段落を見出しスタイルにする
ページ書式
 ページサイズをB4,A4,B5に変える
 【コラム】2つの変数の中身を入れ替える
 文書の基本行数を増減する
 文書の1行の基本文字数を増減する
 指定行数の便箋を作る
 すべての段組みの書式を統一する
表編集
 すべての表の負の値だけ書式を変える
 段落間の表の前に番号を一括挿入する
 表の行と列を転置する
 【コラム】複数のデータをひとつの変数で処理する(配列変数)
表書式
 表の行を斜めに揃える
 すべての表の数字セルを右揃えにする
 すべての表の書式を統一する
 文書中の表の位置を揃える
 すべての表幅を3種類に統一する
 表にスタイルを一括設定する
図編集
 アンカーのロックを切り替える
 すべての行内配置図版に番号を付ける
 図を10%ずつ拡大・縮小する
 章見出しを一気にワードアート化する
 描画キャンバスの図をグループ化する
 描画キャンバスのグループ解除
 選択した図を縦横に整列
 描画キャンバスの図を整列(2007/2010)
 描画キャンバスの書式統一(2007以前)
 テキストボックスの設定を調整する
 行内配置写真の書式統一(2007/2010)
 複数の写真を別段落に分けて挿入する
 写真の幅と高さをまとめて調整する
画面表示
 Wordウインドウを定位置に表示する
 隠し文字だけ表示を切り換える
 決まった寸法でグリッドを表示する
環境設定
 文書の文字色でプリンタを切り替える
 アドインテンプレートをオン・オフする
 「既定のフォルダ」を切り替える

[End]
・ツリー全体表示

【701】お礼 Re:ワード文書内の表の操作について
お礼  チャブー  - 10/7/5(月) 0:26 -

引用なし
パスワード
   お返事ありがとうございました。
「文末の末尾に移動」の命令を加えればよかったとのことで、勉強になりました。
これからも精進したいと思います。

▼H. C. Shinopy さん:
>取り敢えず、「文書の末尾に移動」を追加しました。
>
>参照設定しないと、表意定数が使えないので、
>「wdStory」のところに「6」を指定しています。
>
>Sub hhh4()
> Dim wrd As Object
> Set wrd = CreateObject("word.application")
> wrd.Visible = True
> Set doc = wrd.Documents.Add
> Set sl = wrd.Selection
> '
> sl.TypeText "こんにちは" ''’文書に「こんにちは」と表示
> sl.TypeParagraph ''’改行
> '
> Set sl = wrd.Selection
> Set objrange = sl.Range() '''Rangeの設定
> doc.Tables.Add objrange, 2, 2 ''’行数・列数を指定
> Set objtables = doc.Tables(1)
> '
> objtables.Cell(1, 1) = "a" ''’表に値を挿入
> objtables.Cell(1, 2) = "b"
> objtables.Cell(2, 1) = "c"
> objtables.Cell(2, 2) = "d"
> '
> sl.EndKey Unit:=6 ' wdStory ←文書の末尾に移動
> sl.TypeText "ハロー"
>End Sub
・ツリー全体表示

【700】Re:ワード文書内の表の操作について
回答  H. C. Shinopy  - 10/7/4(日) 22:56 -

引用なし
パスワード
   取り敢えず、「文書の末尾に移動」を追加しました。

参照設定しないと、表意定数が使えないので、
「wdStory」のところに「6」を指定しています。

Sub hhh4()
 Dim wrd As Object
 Set wrd = CreateObject("word.application")
 wrd.Visible = True
 Set doc = wrd.Documents.Add
 Set sl = wrd.Selection
 '
 sl.TypeText "こんにちは" ''’文書に「こんにちは」と表示
 sl.TypeParagraph ''’改行
 '
 Set sl = wrd.Selection
 Set objrange = sl.Range() '''Rangeの設定
 doc.Tables.Add objrange, 2, 2 ''’行数・列数を指定
 Set objtables = doc.Tables(1)
 '
 objtables.Cell(1, 1) = "a" ''’表に値を挿入
 objtables.Cell(1, 2) = "b"
 objtables.Cell(2, 1) = "c"
 objtables.Cell(2, 2) = "d"
 '
 sl.EndKey Unit:=6 ' wdStory ←文書の末尾に移動
 sl.TypeText "ハロー"
End Sub
・ツリー全体表示

【699】ワード文書内の表の操作について
質問  チャブー  - 10/7/4(日) 0:31 -

引用なし
パスワード
   エクセルから、新規ワード文書を開いて、そのワード文書の中に表を作成しているのですが、表に続く部分に記述したい文字列が、表の中に表示されてしまいます。表を解除?する命令が必要なのでしょうか?

以下が私のコードです。どこに問題があるのか指摘いただけますと幸いです。

※エクセルVBAに関する質問ですが、内容はワードVBAに関するものが中心なのでこちらに投稿しました。

*****

Dim wrd As Object
Set wrd = CreateObject("word.application")
wrd.Visible = True
Set doc = wrd.documents.Add
Set sl = wrd.Selection

sl.TypeText "こんにちは" ''’文書に「こんにちは」と表示
sl.TypeParagraph ''’改行

Set sl = wrd.Selection
Set objrange = sl.Range() '''Rangeの設定
doc.Tables.Add objrange, 2, 2 ''’行数・列数を指定
Set objtables = doc.Tables(1)

objtables.Cell(1, 1) = "a" ''’表に値を挿入
objtables.Cell(1, 2) = "b"
objtables.Cell(2, 1) = "c"
objtables.Cell(2, 2) = "d"

sl.TypeText "ハロー" ''’←この「ハロー」が表の中に表示されてしまいます。表に続く文書の部分に表示させたいのですが。。
sl.TypeParagraph
・ツリー全体表示

【698】Re:数値列タイトルを検出しページ更新
お礼  mimikoqa  - 10/6/18(金) 11:17 -

引用なし
パスワード
   ▼H. C. Shinopy さん:
>8〜10桁の数字を検索し、その数字の前に改ページを
>追加するということでいいでしょうか?
>
>1.まず、テスト用の文書を用意し、下の文字列をコピーして貼り付け。
>
>12345678
>あああああああああああああ
>あああああああああああああ
>あああああああああああああ
>999999999
>あああああああああああああ
>
>2.[マクロの記録]で下記の文字列置換の手作業する。
>[検索する文字列]に「([0-9]{8,10})」、[置換後の文字列]に「^m\1」を指定する。
>[オプション]に[ワイルドカードを使用する]のチェックをONにする。
>[すべて置換]ボタンを押す。
>検索置換が終わったら、[検索と置換]ダイアログボックスを閉じて、[Del]キーを押す(すべて置換後に文書の先頭に戻るはずなので)。
>
>その結果がこれ↓。
>実際の文書で正しく動くかどうか…後は必要に応じて手直しして下さい。
>
>Sub Macro1()
>'
>' Macro1 Macro
>'
>'
> Selection.Find.ClearFormatting
> Selection.Find.Replacement.ClearFormatting
> With Selection.Find
>  .Text = "([0-9]{8,10})"
>  .Replacement.Text = "^m\1"
>  .Forward = True
>  .Wrap = wdFindContinue
>  .Format = False
>  .MatchCase = False
>  .MatchWholeWord = False
>  .MatchByte = False
>  .MatchAllWordForms = False
>  .MatchSoundsLike = False
>  .MatchFuzzy = False
>  .MatchWildcards = True
> End With
> Selection.Find.Execute Replace:=wdReplaceAll
> Selection.Delete Unit:=wdCharacter, Count:=1
>End Sub


見事なご回答に感謝いたします。
何の手直しをすることなくcopy,pasteさせていただき実行させていただきました。
1999個の文書が一瞬のうちに処理され所望の改ページが出来上がりました。
全くの感激です。自分の力量不足を痛感し、改めまして
.Text = "([0-9]{8,10})"
.Replacement.Text = "^m\1"
.MatchWildcards = True
の使い方を勉強し直す所存です。
有難うございました。厚く御礼を申し上げます。
・ツリー全体表示

【697】Re:数値列タイトルを検出しページ更新
回答  H. C. Shinopy  - 10/6/18(金) 9:22 -

引用なし
パスワード
   8〜10桁の数字を検索し、その数字の前に改ページを
追加するということでいいでしょうか?

1.まず、テスト用の文書を用意し、下の文字列をコピーして貼り付け。

12345678
あああああああああああああ
あああああああああああああ
あああああああああああああ
999999999
あああああああああああああ

2.[マクロの記録]で下記の文字列置換の手作業する。
[検索する文字列]に「([0-9]{8,10})」、[置換後の文字列]に「^m\1」を指定する。
[オプション]に[ワイルドカードを使用する]のチェックをONにする。
[すべて置換]ボタンを押す。
検索置換が終わったら、[検索と置換]ダイアログボックスを閉じて、[Del]キーを押す(すべて置換後に文書の先頭に戻るはずなので)。

その結果がこれ↓。
実際の文書で正しく動くかどうか…後は必要に応じて手直しして下さい。

Sub Macro1()
'
' Macro1 Macro
'
'
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = "([0-9]{8,10})"
  .Replacement.Text = "^m\1"
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchFuzzy = False
  .MatchWildcards = True
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
 Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
・ツリー全体表示

11 / 45 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
207512
(SS)C-BOARD v3.8 is Free