マクロについてNo.26643
huzisan さん 09/06/01 13:21
 
 初めての投稿です。
 よろしくお願いいたします。

 次の通達群があります。
 文章の番号を一行上の括弧書きの前にもっていくためのマクロを教えていただけま
せんか?
 つまり、【変更前】を【変更後】のようにしたいのですが?

【変更前】
(広告宣伝費と交際費等との区分)
61の4(1)−9 不特定多数の者に対する宣伝的効果を意図するものは広告宣伝費の性
質を有するものとし、次のようなものは交際費等に含まれないものとする。

(福利厚生費と交際費等との区分)
61の4(1)−10 社内の行事に際して支出される金額等で次のようなものは交際費等に
含まれないものとする。

===================
【変更後】
61の4(1)−9(広告宣伝費と交際費等との区分)
不特定多数の者に対する宣伝的効果を意図するものは広告宣伝費の性質を有するもの
とし、次のようなものは交際費等に含まれないものとする。

61の4(1)−10(福利厚生費と交際費等との区分)
社内の行事に際して支出される金額等で次のようなものは交際費等に含まれないもの
とする。

[ ]
RE:26643 マクロについてNo.26644
秀丸担当 さん 09/06/01 14:19
 

マクロではないですが、正規表現を使った置換でできると思います。
文章が必ず行頭から全角括弧で囲われていて、
文章の番号が必ず「xxのxx(xx)−xx 」という書き方になっているという前提と
すると、置換で以下のようにするとできるかもしれません。
[検索(S)]→[置換(R)...]のダイアログボックスで、以下のように入力して置換
します。

検索文字列「^((.+))\n([0-9]+の[0-9]+\([0-9]+\)−[0-9]+) ?」
置換文字列「\2\1\n」
「正規表現」のみON

正規表現についての詳しくは、ヘルプを参照されるといいかもしれないです。

全角の括弧「(」「)」と
グループを意味する半角の括弧「(」「)」と
本当の半角の括弧を意味する「\(」「\)」
があるので注意が必要かもしれません。

「正規表現」をONにしていると、記号がいろいろな意味を持つようになってしま
うので、普通に検索する場合は正規表現をOFFにすると記号もそのまま検索でき
るようになります。

[ ]
RE:26644 マクロについてNo.26648
huzisan さん 09/06/02 03:14
 
 ご丁寧なご指導、ありがとうございました。
 設例の件は変換できました。

 ただ、文字列の意味を全く理解できてない初心者で申し訳ありませんが、次の2つ
の場合には、検索文字列などをどのようにしたら良いのでしょうか?

 前回の設例との対比で、検索文字列の意味が理解できそうな気がしますので。

=============================
 (貸付けの用に供したものに該当しない資産の貸与)
42の5−5 措置法第42条の5第1項に規定する法人が、その取得又は製作をし
た機械及び装置を自己の下請業者に貸与した場合

(土地等の引渡しの日に関し特約がある場合)
62の3(1)−5 62の3(1)−4において「引渡しの日に関し特約がある場合」
とは、例えば、地方公共団体と公有水面の埋立地を分譲する契約を締結した場合
=============================
 また、上記を理解するためのお薦めの参考本をご紹介いただけませんか?

 大変、ずうずうしい質問ばかりで大変申し訳ありません。


[ ]
RE:26648 マクロについてNo.26649
huzisan さん 09/06/02 03:50
 
>=============================
> (貸付けの用に供したものに該当しない資産の貸与)
>42の5−5 措置法第42条の5第1項に規定する法人が、その取得又は製作を
>した機械及び装置を自己の下請業者に貸与した場合

 試してみました。
 上記、ケースの場合は、次で良いですね。
 検索文字列「^((.+))\n([0-9]+の[0-9]−[0-9]+) ?」

 ただ、当初
 検索文字列「^((.+))\n([0-9]+の[0-9]+\([0-9]+\)−[0-9]+) ?」で、置換後、
 もう一度、次の置換をすると
 検索文字列「^((.+))\n([0-9]+の[0-9]−[0-9]+) ?」

 当初の置換が、元に戻ってしまうようですが。
 これを、回避する方法ってありますか?

[ ]
RE:26649 マクロについてNo.26650
huzisan さん 09/06/02 08:20
 
> ただ、当初
> 検索文字列「^((.+))\n([0-9]+の[0-9]+\([0-9]+\)−[0-9]+) ?」で、置換後、
> もう一度、次の置換をすると
> 検索文字列「^((.+))\n([0-9]+の[0-9]−[0-9]+) ?」
>
> 当初の置換が、元に戻ってしまうようですが。

 これは、私の勘違いのようです。
 大変失礼しました。

 ただ、次の場合には、
> 検索文字列「^((.+))\n([0-9]+の[0-9]+\([0-9]+\)−[0-9]+) ?」では、本文
>の「62の3」ももっていってしまいます。

 「62の3(1)−5」だけをもって行くには検索文字列をどのようにしたら良いの
でしょうか?

=============================
(土地等の引渡しの日に関し特約がある場合)
62の3(1)−5 62の3(1)−4において「引渡しの日に関し特約がある場合」
とは、例えば、地方公共団体と公有水面の埋立地を分譲する契約を締結した場合
=============================
 また、上記を理解するためのお薦めの参考本をご紹介いただけませんか?

 技術的にもこのフォーラムへの参加にしても初心者で大変恐縮です。
 何とか秀丸の優秀性を理解し、業務に生かしたいと思いまして。

[ ]
RE:26650 マクロについてNo.26653
秀丸担当 さん 09/06/02 10:22
 

> 「62の3(1)−5」だけをもって行くには検索文字列をどのようにしたら良いの
>でしょうか?

もし「あいまい検索」もONにされているとしたら、あいまい検索の設定で「空白
/タブ文字を無視する」が標準でONなので、空白を無視して、

「62の3(1)−5 62」

までがヒットしてしまうと思います。
あいまい検索を使う場合は「空白/タブ文字を無視する」をOFFにするといいかも
しれません。

または、あいまい検索をOFFのまま全角と半角の数字を検索したいという場合は、
数字の部分
[0-9]+
を、
[0-90-9]+
というようにするという方法もあります。

> また、上記を理解するためのお薦めの参考本をご紹介いただけませんか?

ホームページの左上のおすすめ情報のところに、参考本の紹介があります。

 秀まるおのホームページ(サイトー企画)
 http://hide.maruo.co.jp/

ただ、新しいものでもV5.xx対応になっていて、内容が古いかもしれません。
正規表現に関しては、基本的なところは変わらないと思います。

ユーザーさんのWebページでは、以下のページが参考になるかもしれません。

 秀丸エディタQ&A集
 http://homepage2.nifty.com/jr-kun/hidemaru_qa/index.html

こちらも更新日が古いですが、正規表現に関しては、基本的なところは同じだと
思います。
タグ付き正規表現に関しては、\fで区切る方法と()でグループを作る方法の2つ
があって、ヘルプを参照されたほうがいいかもしれません。

[ ]
RE:26653 マクロについてNo.26658
huzisan さん 09/06/03 01:36
 
 ご指導ありがとうございました。
 最後にもう一つ教えていただけませんか。

 2桁の数字で始まる行を検索し、その行の頭に<段落4>を付した行を2行前にコ
ピーする。

 つまり、下記の【追加前】データを【追加後】データのようにしたいのですが。

===================
【追加前】
42の4(1)−1(他の者から支払を受ける金額の範囲)

措置法第42条の4第1項、第2項又は第6項の規定の適用上、同条第12項第1号
に規定する試験研究費(以下「試験研究費」という。)の額から控除する
===================
【追加後】
<段落4>42の4(1)−1(他の者から支払を受ける金額の範囲)

42の4(1)−1(他の者から支払を受ける金額の範囲)

措置法第42条の4第1項、第2項又は第6項の規定の適用上、同条第12項第1号
に規定する試験研究費(以下「試験研究費」という。)の額から控除する
====================

 本日、注文していた潟EオンツのDVD「秀丸エディタ」が届きました。
 少しづつ、勉強します。


[ ]
RE:26658 マクロについてNo.26659
秀丸担当 さん 09/06/03 09:52
 
> 2桁の数字で始まる行を検索し、その行の頭に<段落4>を付した行を2行前にコ
>ピーする。

以下のようにするとできると思います。

検索文字列「^([0-90-9][0-90-9].*)」
置換文字列「<段落4>\1\n\n\1」
正規表現のみON(あいまい検索はOFF)

[ ]
RE:26659 マクロについてNo.26660
huzisan さん 09/06/03 11:32
 
>> 2桁の数字で始まる行を検索し、その行の頭に<段落4>を付した行を2行前にコ
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>正規表現のみON(あいまい検索はOFF)

 できました。
 大変ありがとうございました。


[ ]
RE:26660 マクロについてNo.26665
huzisan さん 09/06/03 17:41
 
 お世話になります。

 教えていただきました検索文字列と置換文字列は下記の通りです。
 これを順番に実行していけば、やりたい置換が可能だと思います。

 ただ、これをマクロ化などして一括置換は可能でしょうか?
 しつこくて申し訳ありません。

《1》
 検索文字列「^((.+))\n([0-90-9]+の[0-9]+\([0-9]+\)−[0-9]+)?」
 置換文字列「\2\1\n」

《2》

 検索文字列「^((.+))\n([0-90-9]+の[0-9]−[0-9]+)?」
 置換文字列「\2\1\n」

《3》
 検索文字列「^((.+))\n([0-90-9]+の[0-9]+−[0-9]+)?」
 置換文字列「\2\1\n」

《4》
 検索文字列「^((.+))\n([0-90-9]+\([0-9]+\)−[0-9]+)?」
 置換文字列「\2\1\n」

《5》
 検索文字列「^([0-90-9][0-90-9].*)」
 置換文字列「<段落4>\1\n\n\1」
 正規表現のみON(あいまい検索はOFF)



[ ]
RE:26665 マクロについてNo.26666
秀丸担当 さん 09/06/03 17:52
 

マクロで全置換するには、replaceallfastを使います。
replaceallfastについての詳細は、マクロヘルプを参照されるといいかもしれま
せん。

正規表現のみの場合
replaceallfast "検索文字列", "置換文字列", regular;

正規表現とあいまい検索の場合
replaceallfast "検索文字列", "置換文字列", regular, fuzzy;

マクロの文字列の中では、\ を \\ と書かなくてはいけないので注意が必要かも
しれません。

例えば《1》の場合で、正規表現のみONだとしたら、以下のようになります。

replaceallfast
 "^((.+))\\n([0-90-9]+の[0-9]+\\([0-9]+\\)−[0-9]+)?",
 "\\2\\1\\n", regular;

置換するぶんだけ書けば連続して実行できます。
replaceallfast "a","b";
replaceallfast "c","d";
replaceallfast "e","f";

[その他]→[動作環境]→[環境]で指定するマクロファイル用のフォルダに、例え
ば、test.mac というファイル名で保存して、[マクロ]→[マクロ実行]より実行
するとできると思います。

[ ]
RE:26666 マクロについてNo.26668
huzisan さん 09/06/03 20:45
 
 お忙しいのにお付き合いいただき大変感謝いたします。
 今は、マクロの知識は、皆無ですが、中身を解読できるようにしたいと思います。

 そのために、購入した秀丸エディタの操作DVDもマスターしたいと思います。

 できれば、有料で基本コース、中級コース、上級コースなどのセミナーがあれば、
是非参加したいと思います。

 本その他を調べてこつこつ知識の向上を図るより、講師の先生に直接お教えいただ
くようなセミナーの方が受講側にとっても効率的です。

 潜在的な能力の豊富な秀丸をマスターするには、それなりの労力も必要なように感
じます。

 是非、そのようなセミナーがあったらご紹介ください。
 因みに、HPでいろいろ調べたのですが、そのようなセミナーは皆無でした。

[ ]
RE:26668 マクロについてNo.26671
MSHR さん 09/06/04 02:54
 
ユーザーのMSHRと申します。横から失礼します。

もしかして、下記のようにすることで、一発で置換できませんか?

検索文字列:^((.+))\n([0-90-9]{2}の[0-90-9()−]+) ?
置換後文字列:<段落4>\2\1\n\n\2\1\n
(正規表現のみON)



[ ]
RE:26659 マクロについてNo.26672
huzisan さん 09/06/04 06:51
 
>以下のようにするとできると思います。
>
>検索文字列「^([0-90-9][0-90-9].*)」
>置換文字列「<段落4>\1\n\n\1」
>正規表現のみON(あいまい検索はOFF)

 度々、申し訳ありません。
 下記「52−1の分収造林契約・・・」は、本文ですが、これも検索してしまい、
結果として「置換文字数が長すぎて処理できません」とエラーになってストップして
しまいます。

 検索文字列のうち、括弧書きの続くものと指定すれば
 「52−2(分収造林契約の意義)」は検索し
 「52−1の分収造林契約とは、・・・」は除外されると思うのですが。

 その検索文字列がいろいろ試したのですがわかりません。
 ご指導いただけませんか?

=====================
52−2(分収造林契約の意義)
52−1の分収造林契約とは、公有林野等官行造林法を廃止する法律(昭和36年法
律第88号)による廃止前の公有林野等官行造林法第1条、国有林野の管理経営に関
する法律第9条又は分収林特別措置法第2条第1項に規定する契約その他の造林に関
する契約で一定の土地の所有者、当該土地の所有者以外の者でその土地につき造林を
行うもの及びこれらの者以外の者でその造林に要する植林費の全部又は一部を負担す
るもの又はこれらの者のうちいずれか二者が当事者となって締結し、当該造林に係る
山林の伐採又は譲渡による収益を一定の割合により分収することを定めたものをいう
ものとする。

[ ]
RE:26671 マクロについてNo.26673
huzisan さん 09/06/04 07:17
 
>もしかして、下記のようにすることで、一発で置換できませんか?
>
>検索文字列:^((.+))\n([0-90-9]{2}の[0-90-9()−]+) ?
>置換後文字列:<段落4>\2\1\n\n\2\1\n
>(正規表現のみON)

 ご指導ありがとうございます。
 大部分は、置換できたのですが、次のものが適切に置換されませんでした。
 この置換できなかったものについては、自分なりに検索文字列を追加して対処した
のですが。

 できれば、上記ご提示の検索文字列に次の「適切に置換できなかったもの」も対処
できる検索文字列を教えていただけませんか?

====適切に置換できなかったものは、次の4例です。======

(特別償却等の適用を受けたものの意義)
42の5〜48(共)−2 法人が、その有する減価償却資産について・・・・

(特定普通財産の上に存する権利)
66−3 措置法第66条第1項に規定する・・・・

(船舶又は航空機の貸付けの意義)
68の2の3(2)−2 措置法令第39条の34の3第7項第1号に規定する・・・・

(特殊関係株主等である内国法人の特定外国法人に係る所得の課税の特例)
66の9の6−1 特定外国法人に係る措置法・・・・

[ ]
RE:26672 マクロについてNo.26674
秀丸担当 さん 09/06/04 09:37
 
> 検索文字列のうち、括弧書きの続くものと指定すれば

行末が括弧で終わっていると仮定すると、検索文字列を以下のようにするといい
と思います。
^([0-90-9][0-90-9].*(.*))$

[ ]
RE:26668 マクロについてNo.26675
秀丸担当 さん 09/06/04 09:37
 
そういったセミナーが行われているかどうかというのはこちらでは把握していな
いです。申し訳ありません。
例えばホームページ作成講座のようなものの中で、テキストエディタとして秀丸
エディタが使われるようなことはあるかもしれないです。
秀丸エディタだけのセミナーというのは、もしかしたらどこかでやられているか
もしれないですが、いまのところ把握していないです。

[ ]
RE:26673 マクロについてNo.26676
Iranoan さん 09/06/04 09:52
 
 huzisan さん今日は、Iranoan です。
 横から失礼します。
>  できれば、上記ご提示の検索文字列に次の「適切に置換できなかったもの」も対処
> できる検索文字列を教えていただけませんか?
 各々次の理由に検索にヒットしません。

> (特別償却等の適用を受けたものの意義)
> 42の5〜48(共)−2 法人が、その有する減価償却資産について・・・・
検索文字列に含まれない「〜」「共」がある+半角括弧で始まっている

> 66−3 措置法第66条第1項に規定する・・・・
番号の後に「の」がない

> (船舶又は航空機の貸付けの意義)
> 68の2の3(2)−2 措置法令第39条の34の3第7項第1号に規定す
>る・・・・
「の」が二つある+半角括弧で始まっている

> 66の9の6−1 特定外国法人に係る措置法・・・・
「の」が二つある

 最終的には、「どのような文字列がヒットしなくてはいけないか?」は、
huzisan さんしか解らないので、余分なものまでヒットするかもしれませんが、
検索文字列:^([\((].+[\))])\n([0-90-9]{2}[0-90-9()-の共〜]+) ?
置換後文字列:<段落4>\2\1\n\n\2\1\n
(正規表現のみON)
で上手くいくと思います。

P.S DVD の内容は解りませんが、まずヘルプをの正規表現の部分を読んで、あ
る程度理解しないと、なかなか自分で適切な検索文字列を用意できないと思い
ます。

[ ]
RE:26674 マクロについてNo.26679
huzisan さん 09/06/04 14:31
 
>行末が括弧で終わっていると仮定すると、検索文字列を以下のようにするといい
>と思います。
>^([0-90-9][0-90-9].*(.*))$

  ご指導ありがとうございます。質問に正確性を欠いて申し訳ありません。
 下記《パターンA》は検索し《パターンB》は、対象外にしたいのです。

 上記、検索文字列は、長すぎるとのエラーが生じてしまいました。

《パターンA》
52−2(分収造林契約の意義)

《パターンB》
52−1の分収造林契約とは、公有林野等官行造林法を廃止する法律(昭和36年法
律第88号)による廃止前の公有林野等官行造林法第1条、国有林野の管理経営に関
する法律第9条又は分収林特別措置法第2条第1項に規定する契約その他の造林に関
する契約で一定の土地の所有者、当該土地の所有者以外の者でその土地につき造林を
行うもの及びこれらの者以外の者でその造林に要する植林費の全部又は一部を負担す
るもの又はこれらの者のうちいずれか二者が当事者となって締結し、当該造林に係る
山林の伐採又は譲渡による収益を一定の割合により分収することを定めたものをいう
ものとする。(昭52年直法2−33「25」、昭56年直法2−16「十三」、昭
58年直法2−11「九」、平2年直法2−6「十五」、平12年課法2−19「十
二」、平15年課法2−7「三十一」、平17年課法2−14「十六」により改正)

[ ]
RE:26679 マクロについてNo.26681
秀丸担当 さん 09/06/04 15:35
 

>  ご指導ありがとうございます。質問に正確性を欠いて申し訳ありません。
> 下記《パターンA》は検索し《パターンB》は、対象外にしたいのです。

このパターンに限ったことであればお答えできますが、おそらく例外が現れると
思われるので、またコメントを繰り返すことになってしまいそうです。

このパターンに限って言えば、以下の検索文字列でできました。
^([0-90-9][0-90-9]−[0-90-9](.*))$


「番号の部分の後、括弧書きが続く」という条件が、はっきりとした条件を示し
ていただければいいのですが、大変申し訳ありませんが、番号の部分がコメント
を重ねるたびに条件が変化していて、何が本当の条件なのか分からないです。

例えば他の例も組み合わせると、以下のようなパターンも考えられると思います。

12の3〜45(共)−6(AAAAの意義)

12の3〜45(共)−6のXXXXXXXXXXXXX(YYYにより改正)

上の例は題名を意味するものとして、下の例は本文を意味するものと予想して書
いてみました。
ですが、「番号の部分の後、括弧書きが続く」という条件だけでは、正規表現の
解釈では区別が困難です。

Iranoanさんも言われていますが、おそらく本当の条件は huzisan さんしか分か
らないと思います。
難しいとは思いますが、今までの正規表現の記号を1つ1つヘルプと照らし合わ
せて何を意味するのかを把握しておくと、huzisanさんのほうでも応用できるよ
うになるかもしれません。

[ ]
RE:26681 マクロについてNo.26683
huzisan さん 09/06/04 21:37
 
>このパターンに限って言えば、以下の検索文字列でできました。
>^([0-90-9][0-90-9]−[0-90-9](.*))$

 思った通り実行できました。

>難しいとは思いますが、今までの正規表現の記号を1つ1つヘルプと照らし合わ
>せて何を意味するのかを把握しておくと、huzisanさんのほうでも応用できるよ
>うになるかもしれません。

 初心者である私に本当にご親切にご指導いただき感謝いたします。
 検索文字列の意味が少しは理解できた気がします。

 これを機会に少しづつ勉強していきたいと思います。
 大変ありがとうございました。


[ ]
RE:26673 マクロについてNo.26684
MSHR さん 09/06/05 02:59
 
ユーザーのMSHRです。

> できれば、上記ご提示の検索文字列に次の「適切に置換できなかったもの」も対
>処できる検索文字列を教えていただけませんか?

わたしが先の投稿で示した検索文字列は、以下の条件すべてを満たすものにヒットす
るようになっていました:
1.行頭から行末まで全角の括弧でくくられている文字列があり、
2.その次の行の行頭に全角か半角の2桁の数字があり、
3.その次に「の」があり、
4.その次に全角か半角の数字、半角括弧または「−」のいずれかのみを含む(これ
ら以外は含まない)文字列があり、
5.その次に全角空白がもしあればそれも含む

いくつかの文字列にヒットしなかった理由は、Iranoanさんが指摘しておられるとお
りです。

なので、置換できなかった4例を含めようとすると、
 ○上記の条件1を半角括弧も含むように変更
 ○条件3を削除
 ○条件4を次のように変更:
  その次に全角か半角の数字、半角括弧、「−」、「の」、「共」または「〜」の
いずれかのみを含む(これら以外は含まない)文字列

上記のように変更する必要があり、Iranoanさんが修正されている文字列はそういう
趣旨のものです。ただ、何故かIranoanさんの投稿では全角文字が半角になっている
ようなので、それをそのままコピーしてもうまく動作しないと思います。ということ
で、正しくは以下の文字列を検索文字列にしてください:

^([((].+[))])\n([0-90-9]{2}[0-90-9()−の共]+) ?

あとは正規表現のヘルプをみてがんばってください。

[ ]
RE:26684 マクロについてNo.26690
Iranoan さん 09/06/05 21:41
 
 MSHR さん今日は、Iranoan です。
> 上記のように変更する必要があり、Iranoanさんが修正されている文字列はそういう
> 趣旨のものです。ただ、何故かIranoanさんの投稿では全角文字が半角になっている
> ようなので、それをそのままコピーしてもうまく動作しないと思います。
 フォローありがとうございます。
 送信時に、マクロで変換をしてしまっていました。
 ##そのようなマクロを使っていることをすっかり忘れていた(^^;。

[ ]