• 締切済み

一太郎のマクロの書き方を教えてください

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

みんなの回答

  • U-Seven
  • ベストアンサー率56% (557/986)
回答No.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秒にしてしまうとか。 削除するマクロも作ろうかと思いましたが時間がないので・・・、 元文書には手を加えず、マクロ実行、印刷後は上書きせずに終了して下さい。 以上、こんな方法もあるということで御参考まで。 ------(以下、私見ですが)------- テキストエディタなどは用紙という概念がないです、用紙は印刷の都合上で改ページを付けています。 エクセルもそうですね、ワークシート自身は大きな一枚のシートで印刷の都合で改ページを付けています。 ですから、仮に改ページを削除してもデータ的には問題有りません。 ワードはエディタと同じようにデータ構造と用紙設定は別になっていると推測します。 だからワードでは通常の画面が「印刷レイアウト」となっているのです、「下書きレイアウト」にすればエディタ風。 一太郎の場合は「まず初めに用紙ありき」のデータ構造になっていると思います。← ですから置き換えのために一旦は改ページを削除することになるので、用紙そものもが無くなってしまう事になります。 でなければ用紙が長い一枚の巻物にでもならない限り、文字が乗っかる台紙が消滅してしまう。 文書末尾以降にも未記入の用紙が連続して準備してある事などから類推しますと、オーバーフロー的に 次のページに順次文字を送っていると推測します。 一太郎で次のページに文章が流れて行っても、そこには改ページ記号は存在しないと想像します。

akipychan
質問者

お礼

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

  • U-Seven
  • ベストアンサー率56% (557/986)
回答No.1

改ページは無理なんです。 過去にも話題として出たことも有りますが、「改ページ」は検索することが出来ません。 一太郎の正規表現の扱いは完全ではないようです。 それと気になったのですが、改行マークの前に△印を挿入すると、行末尾まで文字が有る場合は△印を挿入することによって1行改行されてると思います。 行が順次後ろのページにずれてしまいますが、このあたりは大丈夫でしょうか。

akipychan
質問者

お礼

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

関連するQ&A

  • 一太郎マクロ

    一太郎マクロにて置換の動作を実行する際 「文書頭から文書末までの検索文字列をすべて置換します。  よろしいですか?」 【はい】【いいえ】 「〇個置換しました」【確認】 とメッセージウインドウが表示され、キー入力を求められます。 これを非表示にする方法をご教授願います。 VBAでいうところのApplication.DisplayAlerts=False の設定はできませんか?

  • ワードのマクロについて

    お世話になります。 エクセルのマクロについてはここでよくアドバイスをもらっていますが、今回ワードでの処理について教えてください。 1つのフォルダにワード文書がたくさん入っています。 各ワード文書に対し以下の操作を自動化させたい。 1.すべてを選択(ctrl+A) 2.置換で「改行」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^p  置換後の文字列は「空白」   すべて置換 3.置換で「スペース」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^w  置換後の文字列は「空白」   すべて置換     4.すべてを選択 5.メニュー→書式→文字種の変換→全角にチェック→OK    ですべての文字を全角にする まとめると「すべての改行、スペースを削除し、全文字を全角に統一する」 この作業をフォルダ内の全ワード文書に対して一括で処理できないでしょうか? ちなみにワード文書は元々メモ帳(*.txt)で作成されていたものをリネームソフトで拡張子を*.docに変換したものです。そのためファイルを閉じるときに「書式なし形式で使用できない機能が含まれています」と聞いてきますが「はい」でOKです。 アドバイスおねがいします。

  • Wordマクロで目に見える文字列だけを探すには

    Word2000のマクロで、目に見える文字列だけ(つまり空白・改行・タブなどは対象外)を探す方法はありますか。 操作をマクロに記録してみましたが、「任意の1文字」を選ぶと、改行とかの「目に見えない」文字まで検索されてしまいます。 そこで、 Selection.Find.ClearFormatting With Selection.Find .Text = "^?" の "^?" を、「目に見える文字列」を指す内容に変えられますか? それが無理なら、何かほかに簡単な方法はないでしょうか。 マクロは素人なので、複雑なことはできないです。 よろしくお願い致します。

  • 秀丸での正規表現を使用した置換

    いつもお世話になっております。 秀丸で正規表現を使用した置換処理を行いたいと思うのですが、どうしても正規表現の式が書けません。 どうかご教示下さい。 <置換前> ABC1 あAbCd++ ... ... ・先頭4文字は半角英数字の大文字固定 ・その後ろにタブ ・最後にかな、英数字、記号などの可変長の文字列 上記で1レコードです。 <置換後> ABC1 String 内容 あAbCd++ ... ... ・先頭4文字そのまま ・その後ろにタブを3つ+改行 ・続いて「内容」という文字列+改行 ・最後に可変長の文字列をそのまま+改行 「置換」の正規表現は以下だと思うのですが、英数字4文字と可変長文字列を別々にマッチさせる「検索」がどうしても分かりません。 \0 String\n内容\n\1\n どうかご教示下さい。 <環境> Ver.6.1.4

  • VZ タグ付き正規表現の置換

    こちらへの投稿が妥当かどうか自信がありませんが、もし御存知の方がいらっしゃったら、お知恵をお貸しいただければと。 恐らく単純な躓きなのでしょうが、ソートー悩んでいます。。。 ヒューレットパッカードの200LXでvzを使っています。 vz起動時、vwxは常駐させています。 他に使用環境の何を書かねばならないか良く分からないので、もしあったら御指摘ください。 以下のような文字列を置換しようとしてうまく行かず困っています。 ある俳優のプロフィールを自分なりに読みやすくしたいのです。 というか、まちがった一括置換で読みにくくなった(御丁寧に保存してしまった^^)ものを読みやすくしたいのです。 対象文字列(の一例) 1996年 「驚變」1997年 「求戀期」「映画ほにゃらら」 年と「の間はtabが入っています。 」と1997年の間は何も入っていません。 (以下の例文では[tab]とか[改行]とか表記します) これを 1996年[tab]「驚變」[改行] 1997年[tab]「求戀期」「映画ほにゃらら」 としたいのです。 つまり」と四桁の数字の間を改行したいのです。 で、検索文字列にこう打ち込みました。 」\([0-9][0-9][0-9][0-9]\) そして置換文字列にこう打ち込みました。 」\n\1 そうすると置換結果はこうなりました。 1996年 「驚變」n1997年 「求戀期」「映画ほにゃらら」 つまり\nが改行記号と認識されず、文字nそのものだよと受け取ったみたいです。 正規表現そのものが全て受け付けてられていない訳ではなさそうです、\1でちゃんと1997年とでてきますから。 また、以下のようにしても、結果は同じでした。 検索文字列 \(」\)\([0-9][0-9][0-9][0-9]\) 置換文字列 \1\n\2 ちなみに 検索文字列 」 置換文字列 」\n としたら、ちゃんと改行できます。 どなたかお知恵をいただけないでしょうか?

  • ワードでマクロがうまくいきません。

    よろしくお願いします。 マクロの知識はほとんどないのですが、 「マクロの記録」の機能を使い、ワードで 「スペースを探し出し、そのスペースにアンダーラインを引く。」 ために、 -------------------- 編集ー置換ー 検索する文字列にスペースをタイプ、 置換後の文字列にスペースをタイプ、 オプションの書式で、フォント、下線、一重下線 すべて置換 -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 マクロの記録中の操作では、思い通りに置換されるのですが、 次にそのマクロを作動させると、なにもおこりません。 なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro2() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 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 = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub -------------------- どうしてうまく動かないのでしょうか。 教えていただけるとありがたいです。よろしくお願いします。

  • マクロを教えてください。

    ワードでマクロがうまくいきません。 マクロの知識はほとんどないのですが、「マクロの記録」の機能を使い、ワードで試しています。 今回は、 「{}の括弧でかこまれた単語を探し出し、その単語を括弧ごと消去する」 というのをしたいのです。 例えば、 ------------------------------- あいうえお{事実}ということ ↓ あいうえおということ ------------------------------ にしたいのです。 自分は ---------------------------------------- -置換-で、「検索する文字列」に「{*}」 「置換後の文字列」になにも書かない で、「置換」をクリック -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 が、なにもおこりません。 (*はワイルドカードのつもりなのですが、間違っていますでしょうか。) なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro1() ' ' Macro1 Macro ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "{*}" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub -------------------- どうしてうまく動かないのでしょうか。 教えていただけるとありがたいです。よろしくお願いします。

  • エクセル2003でのセル内文字列操作マクロ

    あるセルにある文字列を置換し、その置換された文字列を別のセルに移すことをしたいと考えています。 <例> 0000.1111.2222.3333 ↓置換 00:00:11:11:22:22:33:33 (文字列3番目ごとににコロン挿入) 上記のように変換できるマクロメソッド、またロジックなどを教えていただけませんか?また可能でしょうか? (上記の例は逆のパターン(下の文字列から上の文字列への置換)でも結構です。) よろしくお願いします。

  • Exce置換lマクロについて教えてください。

    Exce置換lマクロについて教えてください。 置換画面を表示して、任意の文字を入力しすべて置換したいのですが可能でしょうか? (1)置換画面表示 (2)検索する文字列(初期値:aaa_111) (3)置換後の文字列(bbb_222) (4)すべて置換 教えてください。

  • 一太郎の改頁マクロ作成について

    長文に一括して改ページ記号(ctr+y)を挿入するマクロを教えて下さい。 改行する位置は、「”<cr>」の後ろです。 (ただし、「」は含みません) 宜しく御願いします。

専門家に質問してみよう