サクラエディタのキーマクロで簡単データ加工。

カケプラブログ サクラエディタ

おはようございます。
くまおです。

サクラエディタのお時間です。
本日はキーマクロを使った簡単な文字操作についてご紹介させていただきます。

くまお
くまお

Yahoo!ファイナンスのポートフォリオのデザイン変更に対応するべくバッチ処理を作成してみました!

スポンサーリンク

キーマクロとは

キーボードの操作を記憶させて、その操作を再現させる機能です。

こぐまくん
こぐまくん

さ、さっぱりわからないんだよ!

具体的にデータを加工してみていきましょう。

カケプラブログ
加工対象データ
データの加工方法
  1. 支払日をデータの先頭に移動
  2. 支払い方法を支払金額と同じ行に移動
  3. 支払い方法をカッコ書きに変更
くまお
くまお

加工イメージは次の通りです。

カケプラブログ
データ加工イメージ

データを加工する前に、『Ctrl+Shift+m』を押下してみてください。

カケプラブログ
キーマクロの記録
こぐまくん
こぐまくん

キーマクロの記録中になったんだよ!

この状態でキーボードを操作すると、その操作内容が記録されます。記録を停止するには開始同様『Ctrl+Shift+m』を押下して下さい。

くまお
くまお

それでは先頭のデータを加工してみましょう。

こぐまくん
こぐまくん

えっと、、2行目の支払日を行選択して切り取りして、上の行の先頭に移動して貼り付けて、支払金額の行末に移動して改行を消して、支払方法をカッコに修正して、そのまま文末に移動して、閉じカッコを追加して、、、

カケプラブログ
キーマクロの記録
こぐまくん
こぐまくん

上手に出来たんだよ!

キーマクロを記録した後に、『Ctrl+Shift+l(エル)』を押下すると、現在位置を開始位置として、記録した操作が再現されます。加工したい次データの開始位置に移動して、先ほど記録したキーマクロを動かしてみましょう。

カケプラブログ
記録したキーマクロで加工
こぐまくん
こぐまくん

あっという間に先頭のデータと同じように加工できたんだよ!

これがキーマクロ

こぐまくん
こぐまくん

データがたくさんあるととっても便利なんだよ!

ワンポイントアドバイス

キーマクロの記憶は、『データの加工が終わる迄』、ではなく、『次のデータの加工開始位置に移動迄』としておくと、連続してキーマクロが使用できるのでとても便利です。覚えておいてください。

Yahoo!ファイナンス実践編

最近Yahoo!ファイナンスのレイアウトが変更された影響で、Excelへの貼り付けが難しくなってしまいましたね。

注意点

投資は自己責任です。当記事に記載されている個別の銘柄については、あくまでも参考に記載しているものであり、その売買を推奨するものではありません。

カケプラブログ
Yahoo!ファイナンス ポートフォリオ
くまお
くまお

複数要素ある箇所がうまく張り付けられなくなってしまいました。

カケプラブログ
Yahoo!ファイナンス ポートフォリオ Excel貼り付けイメージ

今迄通りExcelに張り付けられるように、キーマクロを使ったデータ整形バッチを作成したので、同じようにYahoo!ファイナンスのデザイン変更にお困りの方、キーマクロの使い方がイメージできない方、また正規表現を勉強したい方は、参考にしてみてください。

ポートフォリオ加工手順
  1. インプットファイル作成
  2. キーマクロの準備
  3. バッチファイル実行
  4. Excel貼り付け
くまお
くまお

順番に見ていきましょう。

インプットファイル作成

先ずは今までExcelに張り付けていたYahoo!ファイナンスの情報をサクラエディタに貼り付けて保存します。

カケプラブログ
インプットファイル作成
くまお
くまお

基本的に改行があると加工は難しくなりますが、規則性のあるデータなので比較的簡単に加工することが出来ます。

キーマクロの準備

基本的に置換のみの構成です。一度作成してしまえば次回以降の準備は不要です。

// ----------
// キーマクロ
// ----------
// 1.業種"---"を"リート"に置換
ReplaceAll("-{3}\t","リート",4)
// 2.不要なタブを削除
ReplaceAll("\t","",4)
// 3.不要な空行(行頭改行)を削除
ReplaceAll("^\r\n","",4)
// 4.年月行を削除
ReplaceAll("^20[0-9]{2}/[0-9]{2}\r\n","",4)
// 5.月日行を削除
ReplaceAll("^[0-9]{1,2}/[0-9]{1,2}(\r\n|\z)","",4)
// 6.時間を削除
ReplaceAll("^[0-9]{1,2}:[0-9]{1,2}(\r\n|\z)","",4)
// 7.すべての改行をタブに置換
ReplaceAll("\r\n","\t",4)
// 8.4桁の数字(コード)の直前のタブを改行に置換
ReplaceAll("\t([1-9][0-9]{3})","\r\n$1",4)
// 9.EPSの"---"繰り返しを1回に修正
ReplaceAll("(\t-{3}\t)-{3}\t","$1",4)
// 10.不要な行末タブを削除
ReplaceAll("\t$","",4)
// 11.ファイルを別名(outpt.txt)保存
FileSaveAs("output.txt");
// 12.サクラエディタの終了
GroupClose();

ポートフォリオにリートがない場合は、手順1は不要ですし、日付も残したい方は適宜カスタマイズをしてみてください。

くまお
くまお

正規表現については本日のまとめに記載をしているのでここでは割愛します。

バッチファイル実行

準備したインプットファイルとキーマクロを読み込んで、アウトプットファイルを作成してみます。

くまお
くまお

インプットファイルとキーマウロはバッチファイルと同一フォルダに配置して、開いているサクラエディタがあれば閉じてから実行してみてください。

rem --------------------
rem キーマクロ実行バッチ
rem --------------------

rem プロセスチェック
tasklist | find "sakura.exe" > NUL
if %ERRORLEVEL% == 0 (
  echo MsgBox "サクラエディタを閉じて再実行してください。",vbInformation,"info" > msgbox.vbs
  msgbox.vbs
  del msgbox.vbs
  exit
)

rem キーマクロ実行
"C:\sakura-tag-v2.4.1-build2849-ee8234f-Win32-Release-Exe\sakura.exe"  input.txt -M=Key.mac > NUL

rem 出力結果表示
"C:\sakura-tag-v2.4.1-build2849-ee8234f-Win32-Release-Exe\sakura.exe"  output.txt
exit
実行時注意点

ご自身のサクラエディタのインストール先が、上記記載と異なる場合はエラーとなります。必要に応じて赤字箇所を修正してください。

Excel貼り付け

最後に表示結果をExcelに張り付けてみましょう。

カケプラブログ
バッチ出力結果
カケプラブログ
Excel貼り付け結果
こぐまくん
こぐまくん

キレイに張り付けることが出来たんだよ!

細かいレイアウトは違うと思いますが、皆様の一助になれば幸いです。

本日のまとめ

本日のまとめ
  • Ctrl+Shift+m:キーマクロの記録
  • Ctrl+Shift+l:キーマクロの実行
  • Replaceall:置換
  • {n}:n回繰り返しの正規表現
    1{5}:1を5回繰り返す
  • \t:タブの正規表現
  • \r\n:改行の正規表現
  • [0-9]:0から9迄の任意の1文字を表す正規表現 ※文字も可
  • $:行末を表す正規表現
  • ^:行頭を表す正規表現
  • $n:置換前文字列に指定した一部を置換後に残したい場合に使用する正規表現
    置換前文字列:aaaaaaa
    置換前:(aaa)a(aaa)
    置換後:$1b$2
    置換結果:aaabaaa
  • |:いずれかを表す正規表現
    a|b:aかb
くまお
くまお

気になる点があれば、ご質問ご指摘いただけますと励みになります。

如何でしたか。キーマクロ使いこなしたくてうずうずしてきましたか。
皆様の日常に欠片でもプラスになれば幸いです。

それではまた。

コメント