はじめに

多量の行が表示されないように、このブログは1コンテンツしか表示されない。ブログアーカイブから、他の記事を捜してくれ。

環境作れし。
・gawk 3.1.5 for Windows をググッて入手。
・gawk.exeをpathの通ったフォルダにぶち込めし。
 (「windows パスを通す」ググッて)
 (面倒なら、C:\windowsにぶち込む)
・環境変数「awkpath」にスクリプトを保存するフォルダを設定。
 (「環境変数 設定 windows」ググッて)
 (面倒なら、C:\windowsに、紹介されているスクリプトぶち込む)
ラベル Macro の投稿を表示しています。 すべての投稿を表示
ラベル Macro の投稿を表示しています。 すべての投稿を表示

2014年5月18日日曜日

シート内図形のセルグリッド位置調整 Excel Macro

Excel方眼紙で図面を書いてるヤシに朗報だ。

複数の選択された図形オブジェクトを近傍点セルグリッドに合わせてくれるマクロだ。
・図形の左上基点グリッド合わせ(サイズ変更なし)
・図形の右下基点グリッド合わせ(サイズ変更なし)
・図形の左右上下すべてのグリッド合わせ(サイズ変更)
上記3つのどれかを選んで位置調整。
調整方向は縦/横/縦横が選べる。コネクタの除外指定もアリ。
ただし、コネクタはExcelのバージョンによって挙動が違うので期待するな。

Macroのつぼ

VBAのウィンドでフォームの追加をしろし。
フォーム名は"AdjustObject"
フォーム内に何のコントロールを貼るかは、上の画面とフォームのInitialロジックを見て
考えてくれ。フォームをロードするエントリ関数は”図位置調整()”。これを呼び出せば動く。

化石言語BASIC固有の文法で、EndiFを書かないIf文や行番号ジャンプが書かれている。
また、"If CONTROL Then ・・・"は、"If CONTROL.value = True Then・・・"と同じだ。
両方ともコードをシンプルにする為に、ベストな方法だ。
goto文は必要な箇所に充分つかえし。

AdjustObject(コード)


標準モジュール

2014年5月2日金曜日

正規表現検索ワークシート関数 excel macro

クソみたいなexcelのfind関数の代わりにつかってくれ。
他マクロからの呼び出しやワークシート関数として使える。

ただし、検索できるのはソース文字列(orセル)中で最初にマッチした1件のみ。複数検索したいヤシは、For Eachループ内のmatchオブジェクトをナンとかしてくれ。ワークシート関数の体をなしたままだと何かとメンドーそーだ。

使い方

=RegExp(<検索対象>,<正規表現パターン>,<"S" or "P" or "L">)

ex.
=RegExp(C4,"「.*」","S")
   C4セルの中からかぎ括弧で囲まれた文字列を探す。

=RegExp("日月火水木金土",C4,"P")
 C4セルに書かれた文字を曜日並びから検索し、何個目の曜日なのか、文字位置を返す。

=RegExp(C4,"(YES|NO)","L")
 C4セルに書かれた文字が"YES"なら"3"、"NO"なら"2"のようにマッチした文字数を返す。

Macroのつぼ

WSH等で使われるComモジュールのRegExpをExcelから呼び出している。
残念な事に、"L","P"を指定したときに返ってくる数値は文字型だ。

まっとうに使いたいヤシは、改造して、直接マクロから呼びだすべし。
マクロ作るのメンドーで、ワークシート関数でナントカしたいヤシ、そのまま使ってくれ。アドイン(.xla)で作った方がイイと思う。



2013年10月23日水曜日

Excel全シートテキスト保存 Excel macro

番外編で Excel Macro VBAだ。

用語辞書作成支援で紹介したAwkScriptだが、食わせる元文書がExcelだと大変。
数十もあるシートをテキスト保存して、Mecabに食わせるなんてウンサリするぞ、
…てなわけで、VBAだ。
ブック名+シート名.tsvというファイル群を一気に生成する。

ただし、内部的には、保存時にブック名と形式がテキストファイルに変わっているから、最後に戻す、、、と言いたい所だが、ブック名と形式を戻す為には、再度保存しないと戻せない。
勝手に元ブックに保存するのはマズいので、元ブック名の先頭に "_" をつけてみる。

ま、後は好きにやってくれ。

WinMergeのExcelアドインはヘボいから、コイツでテキスト保存して、フォルダ単位にWinMerge差分を採る…なんて使い方もあるぞ。
ただし、オブジェクトは無視してるから我慢してくれ。