おはようございます。
くまおです。
サクラエディタのお時間です。
本日はキーマクロを使った簡単な文字操作についてご紹介させていただきます。
Yahoo!ファイナンスのポートフォリオのデザイン変更に対応するべくバッチ処理を作成してみました!
キーマクロとは
キーボードの操作を記憶させて、その操作を再現させる機能です。
さ、さっぱりわからないんだよ!
具体的にデータを加工してみていきましょう。
加工イメージは次の通りです。
データを加工する前に、『Ctrl+Shift+m』を押下してみてください。
キーマクロの記録中になったんだよ!
この状態でキーボードを操作すると、その操作内容が記録されます。記録を停止するには開始同様『Ctrl+Shift+m』を押下して下さい。
それでは先頭のデータを加工してみましょう。
えっと、、2行目の支払日を行選択して切り取りして、上の行の先頭に移動して貼り付けて、支払金額の行末に移動して改行を消して、支払方法をカッコに修正して、そのまま文末に移動して、閉じカッコを追加して、、、
上手に出来たんだよ!
キーマクロを記録した後に、『Ctrl+Shift+l(エル)』を押下すると、現在位置を開始位置として、記録した操作が再現されます。加工したい次データの開始位置に移動して、先ほど記録したキーマクロを動かしてみましょう。
あっという間に先頭のデータと同じように加工できたんだよ!
これがキーマクロ。
データがたくさんあるととっても便利なんだよ!
Yahoo!ファイナンス実践編
最近Yahoo!ファイナンスのレイアウトが変更された影響で、Excelへの貼り付けが難しくなってしまいましたね。
複数要素ある箇所がうまく張り付けられなくなってしまいました。
今迄通りExcelに張り付けられるように、キーマクロを使ったデータ整形バッチを作成したので、同じようにYahoo!ファイナンスのデザイン変更にお困りの方、キーマクロの使い方がイメージできない方、また正規表現を勉強したい方は、参考にしてみてください。
順番に見ていきましょう。
インプットファイル作成
先ずは今まで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に張り付けてみましょう。
キレイに張り付けることが出来たんだよ!
細かいレイアウトは違うと思いますが、皆様の一助になれば幸いです。
本日のまとめ
気になる点があれば、ご質問ご指摘いただけますと励みになります。
如何でしたか。キーマクロ使いこなしたくてうずうずしてきましたか。
皆様の日常に欠片でもプラスになれば幸いです。
それではまた。
コメント