fc2ブログ

CSVのフィールド名をメニュー表示して移動する

2011/11/24(木) 00:58

最近、巨大なCSVデータを扱うことが多くなり、EmEditorのCSVモードを利用しています。他のCSVモードを備えたテキストエディタや、CSV専用エディタを試用してみましたが、EmEditorのようにサクサク動作してくれるものはありませんでした。

企業の業務用途に適したテキストエディタとして定着するためにも、CSVモードのさらなる充実を望みたいところです。現状でいちばん足りないと感じるのは、列名(ファイルの先頭行)を常時表示する機能です。水平スクロールしながら、いま自分がどのフィールドにいるのかわからないのです。(現バージョンにすでに[分割ウィンドウの水平同期スクロール]があります。失礼しました。2011/11/26)

そこで、フィールド名をメニューに一覧表示し、一発で移動するマクロを作ってみました。

    sFirstLine = document.GetLine(1);
    aLine = sFirstLine.split(/,/);

    menu = CreatePopupMenu();
    for (i = 0, c = 0x41; i < aLine.length; i++, c++) {             // 0x41 = 'A'
        sField = aLine[i];
        menu.Add("&" + String.fromCharCode(c, 0x09) + sField, i + 1);
    }
    result = menu.Track();

    if (result == 0) { Quit(); }

    yPos = document.selection.GetActivePointY(eePosLogical)
    sCurrentLine = document.GetLine(yPos);

    //行頭から指定回数だけカンマを検索する
    //データ中のカンマは考慮していない(手抜き)
    Redraw = false
    document.selection.StartOfLine(true, eeLineLogical);
    for (i = 0; i < result - 1; i++) {
        document.selection.Find(",", eeFindNext )
    }
    document.HighlightFind=false;
    document.selection.Collapse();
    Redraw = true

    //横位置の調整(いったん行末に移動して戻る)
    xPos = document.selection.GetActivePointX(eePosLogical)
    document.selection.EndOfLine(true, eeLineLogical);
    document.selection.SetActivePoint(eePosLogical,xPos,yPos)

単純にカンマをフィールドの区切りとみなします。手抜きのため、データの中にカンマが含まれると、正確に移動できません。最初は、現在行をカンマでsplitし、移動位置を計算しようとしたのですが、空のデータ(カンマの連続)は要素とみなされないためうまくいきません。行頭からカンマを所定回数検索するというベタベタな方法を採用しました。

あ、[次のセル]コマンドを使えばいいのか。

スポンサーサイト



Excel VBA 正規表現置換マクロ

2011/06/11(土) 17:45

久しぶりの更新です。

テキストファイルを愛する者も浮世のしがらみでExcelを使います。

電話番号をハイフン区切りなしで数字で入力すると先頭の'0'が消えてしまう。これは定番の悩みでしょう。Excelの標準機能では修正しづらい。「正規表現置換すれば元に戻せるのに……」。アドインが公開されているようですが、自分好みにマクロを作ってみました。サンプルの履歴には先頭の'0'が消えた8桁や9桁の数字を固定電話番号'0XXX-XX-XXXX'や携帯電話番号'0XX-XXXX-XXXX'に置換する例を入れてあります。置換履歴を保存できるところが売りです。

ダウンロード

上のリンクを右クリックして[対象をファイルに保存]してください。ブログの仕様で.zipファイルをアップロードできないため、拡張子を.jpgにしてあります。拡張子.zipにリネームして解凍してください。

無限階層マクロメニュー for EmEditor

2010/08/28(土) 12:47

EmEditor v9 で強化されたスニペットプラグインは、定型文の作成をサポートする本来の機能もさることながら、マクロを統合的に管理する環境としても素晴らしいですね。拙作「VZ Editor化パック」は v8 時代には、導入するためには細々としたマクロファイルへのキーバインドが必要で、実行時のオーバーヘッドが大きかったのですが、スニペット化するとインポート一発で済み、実行時のオーバーヘッドも小さくなりました。

スニペットのおかげで出番は少なくなりましたが、v8 時代には「無限階層マクロメニュー」で多少ともマクロを管理しやすくしようと試みました。現在でも有用な場面はあると思うので紹介します。

EmEditorのマクロを階層メニューから選択実行します。

EmEditor標準の[ツール]→[メニューの変更]によるマクロの階層化とは以下の点がちがいます。

  • 定義ファイル(タブインデントによる階層形式)を直接テキストエディタで編集します。GUIで定義するよりもお手軽かもしれません。
  • マクロファイル中の関数を直接実行できます。(限定あり)
  • 「一行野郎」的なマクロ文を定義ファイルに直接記述できます。

2010_08_28_12_18_38.jpg

2010_08_28_12_19_38.jpg

 無限階層マクロメニュー for EmEditor

上のリンクを右クリックして[対象をファイルに保存]してください。ブログの仕様で.zipファイルをアップロードできないため、暫定的に拡張子を.jpgにしてあります。mugen2.zipにリネームして解凍してください。

EmEditor v8 時代に公開したそのままです。

[次の変更]と[前の変更]のキーバインド

2010/08/20(金) 10:05

しばらく更新していませんでした。自分の使い方で必要なマクロはだいたい揃ってしまい、あまりネタがなくなったような気もします。

さて、v10で追加された[比較]機能ですが、やはり編集画面でダイレクトに比較できると便利ですねぇ。そこで小ネタをひとつ。私は使用頻度が高い[次の変更]と[前の変更]には、Alt+F3とAlt+Shift+F3を割り当てています。[次を検索](F3)と[前を検索](Shift+F3)からの連想です。[比較]にはズバリAlt+Cを割り当てています。

旧漢字・異体字変換 for EmEditor

2010/07/31(土) 09:58

文書の選択範囲を旧漢字・異体字と相互変換します。

たとえば、

當時遠島を申し渡された罪人は、勿論重い科を犯したものと認められた人ではあるが、決して盜をするために、人を殺し火を放つたと云ふやうな、獰惡な人物が多數を占めてゐたわけではない。高瀬舟に乘る罪人の過半は、所謂心得違のために、想はぬ科を犯した人であつた。有り觸れた例を擧げて見れば、當時相對死と云つた情死を謀つて、相手の女を殺して、自分だけ活き殘つた男と云ふやうな類である。(青空文庫・森鴎外の「高瀬舟」より引用)
を新漢字に変換すると、
当時遠島を申し渡された罪人は、勿論重い科を犯したものと認められた人ではあるが、決して盗をするために、人を殺し火を放つたと云ふやうな、獰悪な人物が多数を占めてゐたわけではない。高瀬舟に乗る罪人の過半は、所謂心得違のために、想はぬ科を犯した人であつた。有り触れた例を挙げて見れば、当時相対死と云つた情死を謀つて、相手の女を殺して、自分だけ活き残つた男と云ふやうな類である。
となります。

逆に、現代文をわざと難しく見せることもできます。

マクロファイル中の関数を直接実行できます。(限定あり) 「一行野郎」的なマクロ文を定義ファイルに直接記述できます。
を旧漢字に変換すると、
マクロファイル中の關數を直接實行できます。(限定あり) 「弌行埜郎」的なマクロ文を定義ファイルに直接記述できます。
となります。

 旧漢字・異体字変換 for EmEditor

上のリンクを右クリックして[対象をファイルに保存]してください。ブログの仕様で.zipファイルをアップロードできないため、暫定的に拡張子を.jpgにしてあります。qkanji.zipにリネームして解凍してください。

EmEditor v8 時代に公開したそのままです。

 ホーム  過去 ⇒
copyright © 2007 テキストエディタを愛す all rights reserved.