dポイントプレゼントキャンペーン実施中!

一太郎のマクロを作ろうとしています(マクロの記録を手直しするぐらいしかできないズブ素人です)。いま作ろうとしているのは作ったテキストデータをゲラ刷りして校正する時にどこに改行マークが入っているか、改頁マークが入っているかをチェックできるように改行のところは△を挿入し、改頁のところには◎を挿入しようというものです。
改行を置換する作業をマクロの記録で分析したところ、改行は正規表現の\nで表しているので、改頁は正規表現の\fでいいのだろうと思って次のようなソースで作ってみたのですが、改行の方はうまく作動するのですが、改頁の方はエラーが起きてしまいます。どのように書いたら改頁マークを検索文字列としてとらえることができるのか教えてもらえると助かります。

-----
文字全置換(.検索文字列="\n",.置換文字列="△"&"\n",.検索方向=3,.あいまい検索=0,.確認=0)
文字全置換(.検索文字列="\f",.置換文字列="◎"&"\f",.検索方向=3,.あいまい検索=0,.確認=0)
-----

A 回答 (2件)

ページの区切り位置に記号を入れるということなので、何も「改ページ記号」の検索である必要は無いのではないか、という発想で。


ページの区切りに“◎”印を入れれば良いわけです、ということで別の手法で考えてみました。

(その1)
各ページの末尾に◎印を挿入します。
手法は、カーソルを移動させて◎を挿入します、No.1で述べたように行が繰り下がるのを少しでも防ぐために
文書の最終ページから順次前のページに移動して書き込みます。

(注:!!が付いている行や!!の後の文字はマクロでは無視されるのでそのまま登録してOK)
-----(ここから、破線は不用)-------------------
!!各ページ末に◎印を追加する
!!ページ末行に文字が有れば文字の後ろに追加される
ErrorBreakMode(0,1,0)   !!エラー時の動作設定
JumpEnd()      !!最終ページにジャンプ
%pn = GetPage()    !!そのページ数を取得
NextPage()     !!次のページにジャンプ
%P = %pn-1     !!繰り返し回数を決める(総ページ数から-1)
for %k = 1 to %P   !!nextの所までを、%P回繰り返す
PreviousPage()   !!前頁の1行目にジャンプ
StartOfLine()   !!行頭に移動
CursorLeft()    !!カーソルを一文字左に移動(結果として前頁末尾に移動)
Insert("◎", )   !!◎印を挿入
NextLine ()    !!カーソルを戻す
Wait(0.8)     !!確認用タイマー、0.8秒(削除して良い)
next       !! for に戻る
end
-----(ここまで)--------------------

(その2)
各ページの頭に1行追加して、そこに“☆-ここで改ページ-☆"という文字を記入する。
(P-1のお尻とP-2の頭は同一であるので、ページ区切り位置としてページ頭を採用した。)
これも行追加によるページ構成のズレを防ぐため最終ページから順次前方に記入します。
------(ここから)---------------------
!!各ページの先頭に1行追加して「☆-ここで改ページ-☆」を
!!挿入する
ErrorBreakMode(0,1,0)   !!エラー時の動作設定
JumpEnd()      !!最終ページにジャンプ
%pn = GetPage()   !!そのページ数を取得
NextPage()     !!次のページにジャンプ
%P = %pn-1     !!繰り返し回数を決める(総ページ数から-1)
for %k = 1 to %P   !!nextの所までを、%P回繰り返す
PreviousPage()    !!前頁の1行目にジャンプ
StartOfLine()    !!行頭に移動
Insert("☆-ここで改ページ-☆", 1)    !!文字を挿入し改行する
Wait(0.8)     !!確認用タイマー、0.8秒(削除して良い)
next      !! for に戻る
end
-------(ここまで)-------------------

その1・2、どちらのマクロにも『Wait(0.8)』という記述があります、これは動作を目で見て確認するためのタイマーです、
デバッグが終われば不用ですが目で確認できるため付けたままにして有ります、削除してかまいません。
あるいは(0)で0秒にしてしまうとか。

削除するマクロも作ろうかと思いましたが時間がないので・・・、
元文書には手を加えず、マクロ実行、印刷後は上書きせずに終了して下さい。

以上、こんな方法もあるということで御参考まで。


------(以下、私見ですが)-------
テキストエディタなどは用紙という概念がないです、用紙は印刷の都合上で改ページを付けています。
エクセルもそうですね、ワークシート自身は大きな一枚のシートで印刷の都合で改ページを付けています。
ですから、仮に改ページを削除してもデータ的には問題有りません。

ワードはエディタと同じようにデータ構造と用紙設定は別になっていると推測します。
だからワードでは通常の画面が「印刷レイアウト」となっているのです、「下書きレイアウト」にすればエディタ風。

一太郎の場合は「まず初めに用紙ありき」のデータ構造になっていると思います。←
ですから置き換えのために一旦は改ページを削除することになるので、用紙そものもが無くなってしまう事になります。
でなければ用紙が長い一枚の巻物にでもならない限り、文字が乗っかる台紙が消滅してしまう。
文書末尾以降にも未記入の用紙が連続して準備してある事などから類推しますと、オーバーフロー的に
次のページに順次文字を送っていると推測します。
一太郎で次のページに文章が流れて行っても、そこには改ページ記号は存在しないと想像します。
    • good
    • 0
この回答へのお礼

経験者さんへ>
回答ありがとうございました。うーん、さすがですね。キーの記録をいじるだけでは解決しなくても、まともに考えないで、迂回というのか別の方法を考える。経験者の知恵ですね!早速試しましたら、ばっちり動きました!これで完成です!
僕たちはhttp://bba-book.net/というところで活動していまして、会員が作ったテキストファイルを加工して弱視者のための拡大写本(22ポイント以上のゴシック体)を作っています。原本と照らし合わせれば、どこで改頁しなければならないか分かるのですが、テキストファイル自体に改頁マークが含まれていると一太郎やワードで読み込んだときに改頁が自動的にできるのでテキストファイルの中に改頁マークを保存しておくようにしています。iTextとかエディターでも改頁マークを入力できますが、参加している人たちがいわゆるおじさん、(特に)おばさんなのでエディター?って言っても知らない人達ばかりですので、一太郎とワードで入力しては最後にテキストファイルで保存しています。ただ一太郎を持っている人はだんだん減ってきているので、ワードで入力する人には改頁のところでははじめから◎を入力しておいてもらっています。実際の編集の時には◎を削除しています。いずれにしろ目的のマクロができたので嬉しいです。本当に本当にありがとうございました!
m(__)m m(__)m m(__)m

お礼日時:2007/08/17 16:45

改ページは無理なんです。


過去にも話題として出たことも有りますが、「改ページ」は検索することが出来ません。
一太郎の正規表現の扱いは完全ではないようです。

それと気になったのですが、改行マークの前に△印を挿入すると、行末尾まで文字が有る場合は△印を挿入することによって1行改行されてると思います。
行が順次後ろのページにずれてしまいますが、このあたりは大丈夫でしょうか。
    • good
    • 0
この回答へのお礼

U-senvenさんへ
早速回答ありがとうございます。過去の記事を読んでないことがバレバレで、すみません(^_^;
置換を記録するときに、改行マークを検索文字欄にコピーペーストするとちゃんとそのまま入るのに、改頁マークマークを検索文字欄にコピーペーストすると改行マークに変身するので、なぜ?と思っていましたが、やっぱり無理なんですね。変に安心しました。ワード文書をテキスト保存すると改頁マークが消えてしまうが、一太郎は消えないのでワードはおバカだとみんなに言っていたのですが、置換の時にはだめなんて片手落ちというか作者は気が回っていないですね。ワードで記録をとってみたら改行マークはchr(10)と出たので、chrコードで書けばいいんだと思って改頁マークをchr(13)にしてみたらちゃんとヒットしました。そういう意味では一太郎はおバカですね。まあ細かいことというのはユーザーが指摘しないといけないのでしょうが、なかなかそこまでの気持ちの余裕ができませんよね。後ろのページにずれるのはやむを得ないと思っています。一太郎は正規の正規表現は使えない?正規表現を使うんですね。私のような素人は深入りするつもりはありません。ワードのマクロで置換するようにしたいと思います。一太郎が好きなんですが、残念ですが、先輩の一言ですっきりあきらめがついたのでよかったです。ありがとうございましたm(__)m

お礼日時:2007/08/16 15:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!