次の方法で共有

マクロが手動と異なる動作をする。

Anonymous
2018-02-14T08:29:19+00:00

お世話になります。

word365を使用しているハンドルネームPearswordというものです。

今日は、wordのマクロ機能について判らないところがあって質問します。

開発タブで、マクロの記憶をクリックして、動作を記憶させたのですが、マクロを実行すると、手動のときと異なる動作をしてしまい、困っております。

具体的には、

①ワイルドカードを使った検索で「(COMMENT:)*</br>*(-----)」

②その結果の選択領域で、普通の置換「</br>」→「^p」

とすると、

手動では、「COMMENT:」と「-----」に挟まれた領域の「</br>」だけが変換されるのですが、マクロに記憶させて実行すると、全文書の「</br>」が変換されてしまうのです。

あいにく、僕はVBAの知識が無いので、どうすれば良いかわかりません。

宜しかったら、なにかアドバイスを戴けないでしょうか?

よろしくお願い申し上げます。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-02-17T10:52:05+00:00

    デバッグコードとは何か、からして良く判りませんでしたが、自分なりに、selection.Find

    というコマンドを調べてみました。

    すると、置換するときには、

    selection.Find.Replacement

    というプロパティを指定することが判り、

    selection.Find.Replacement.clearformatting

    でその前に検索した文字列と書式をクリアーすることが判りました。このコマンドが臭いと睨み、削除して実行すると、検索された文字列の選択範囲が保持されたままで、置換されました。

    必ずしも、万全な解答とは言えませんが、これを削除したマクロ5のVBAをループ化して繰り返すことで、文書内の目的の文字を置換することに成功しました。

    何事も、調べてみないと判らないですね。また、自分で調べても少しは判るものだと、勉強になりました。

    どうも、アドバイスありがとう御座いました。

    Pearsword

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Hebikuzure aka Murachi Akira 325.9K 評価のポイント MVP ボランティア モデレーター
    2018-02-15T08:17:27+00:00

    それぞれの検索/置換の際の selection オブジェクトの中身が何か、デバッグコードで確認してみると良さそう。

    selection.Type でselection の種類を確認する、selection.text で中のテキストを確認する、など試してみると良いかと。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-02-15T07:39:04+00:00

    Hebikuzure様、

    返答遅くなりまして、恐縮です。

    一部、動作の変更があります。

    Wordで、一度「COMMENT:*-----」をワイルドカードを使用して検索すると、「COMMENT」と「-----」に挟まれた領域が選択されます。そこで一度、検索ダイアログを閉じて、もう一度、置換で、ワイルドカードのチェックを外して、「<br />」を「^p」に置換すると、検索ヒットした領域内だけ、置換されます。

     これらの一連の動作について、マクロの記録を行うと、次のようなVBA

    になります。

    Sub Macro5()

    '

    ' Macro5 Macro

    '

    '

        Selection.Find.ClearFormatting

        With Selection.Find

            .Text = "COMMENT:*-----"

            .Replacement.Text = ""

            .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

        Selection.Find.ClearFormatting

        Selection.Find.Replacement.ClearFormatting

        With Selection.Find

            .Text = "<br />"

            .Replacement.Text = "^p"

            .Forward = True

            .Wrap = wdFindAsk

            .Format = False

            .MatchCase = False

            .MatchWholeWord = False

            .MatchByte = False

            .MatchAllWordForms = False

            .MatchSoundsLike = False

            .MatchFuzzy = False

            .MatchWildcards = False

        End With

        Selection.Find.Execute Replace:=wdReplaceAll

    End Sub

     このマクロを使用すると、選択領域だけでなく、全文書の「<br />」が、改行に置換されてしまいます。

     手動だと、上手く行くのに、どうして記憶させると、選択領域内だけにならないのか、わかりません。 

     宜しかったら、お力をお貸し下さい。

    Pearsword

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Hebikuzure aka Murachi Akira 325.9K 評価のポイント MVP ボランティア モデレーター
    2018-02-14T08:45:12+00:00

    マクロのコードを示した方が早いでしょうね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません