• ベストアンサー

秀丸エディタのマクロのことで

秀丸エディタ(Ver3.19)の置換で正規表現を用いても以下のことはできないと思います。 501~520までの数字を623~642に一括変換する。 そこで上記のようなことが可能なマクロを教えてもらいたいのですが。ようは置換元の範囲と置換後の範囲を指定することで、任意の数字に対して連番置換ができるマクロです。 ワードのVBAでも結構です(エクセルではダメですが)。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

ワードのVBAで回答。 マクロの記録を改造。501から520までを122プラスした文字数字に置換する問題とする。 Sub Macro1() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 501 To 520 With Selection.Find .Text = StrConv(Trim(Str(i)), 4) MsgBox StrConv(Trim(Str(i + 122)), 4) .Replacement.Text = StrConv(Trim(Str(i + 122)), 4) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub .Forward=True以下.MatchFuzzy = Trueまでは不要と思います。 少数例でテスト済み。

yusari
質問者

お礼

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

その他の回答 (2)

  • ribisi
  • ベストアンサー率28% (247/864)
回答No.2

今日の昼間に、同様の件で回答した者です。 あれから、簡単な方法を思いつきました。 あくまで、質問内容のような、1対1置換を20個程度、という条件ですが、 秀丸マクロで replaceallfast "501","623"; replaceallfast "502","624"; (以下同様) と、置換コマンドをベタ打ちしてしまいます。 今後も同様な用件があると見込まれるのでしたら、ちゃんとプログラミング したほうがよいですが。

yusari
質問者

お礼

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

回答No.1

 はなはだ余計なお世話かもしれないけど一言。  質問のご趣旨からすると「マクロを一から書いてくれ」という意味合いなんですね。そもそもマクロというのは、ユーザーが自分のために自分で書くプログラムなんですよね。  こういう場合の質問の書き方として、私が書くなら、 「自分なりにマクロを書いてみました。以下のとおりです。それで実行してみたら、うまく動きませんでした。どこが悪いか教えてください。」  これならきっとすぐにでも回答が付くと思います。  それと、秀丸のマクロについての質問なら、秀丸のサポートサイトのほうが的確だと思います。質問者は努力の跡を見せないと、回答者は回答しにくいですね。

yusari
質問者

お礼

ありがとうございました。 >マクロというのは、ユーザーが自分のために自分で書くプログラムなんですよね。 それはある程度知識がある人という前提条件が付くと思いますが。PCを扱う人誰もが普通に自分のために使いこなせるレベルのものではないと思いますが。 >こういう場合の質問の書き方として、私が書くなら、 それは貴方のようにマクロの知識のある人の場合ということなのでは。 >質問者は努力の跡を見せないと、回答者は回答しにくいですね。 「回答者は回答しにくい」と一般論に話を持っていかれているようですが、貴方個人が回答しにくいということなのでは。

関連するQ&A

専門家に質問してみよう