はじめに

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

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

2024年4月29日月曜日

VBA:SQL日英相互変換

Gemini先生、すばらしい。今回のマクロのソースを「このコードの取扱説明書を日本語で書いて」の一文を添えて貼り付けたら説明書を書いてくれたし。

で、下準備だ。
マクロ対応ブック(.xlsm)に"DBDIC"というシートを作成し、エンティティ定義書やテーブル項目定義書を基に"DBDIC"というテーブルを作れし。項目名、項目IDは正規化しろし。テーブル名と項目名の対応は管理せずそれぞれ個別の辞書を作っている。

セル範囲はどこでもいいが、3,4,6,7カラムにテーブル英名、テーブル日名、項目英名、項目日名が入った表を作れし。カラム位置や並び順を変えたいならMakeDICマクロを修正しろし。
表を範囲選択し、CTRL+Tを押せば、テーブルが作成される。


[テーブルデザイン]-[テーブル名]を”DBDIC"に変更。

VBAエディタから「メニュー追加」を実行すりゃ準備完了。

別のシートを適当に作成し、仕様書から日本語SQLを張り付けたりSQLコードを貼り付け、セル範囲選択し、右クリックメニューから「SQL日英」「SQL英日」「取り消し線文字排除」を実行しろし。クリップボードに結果が転送される。
※下図、whear->where な。面倒だから直さん。

SQLCONV.BAS

以下、Gemini先生の説明だ。日英と英日を取り違えてるのは御愛嬌だ。


このマクロは、主に以下の機能を提供します。

    このコードの取扱説明書 (This code's manual)

    このマクロは、主に以下の機能を提供します。

    • メニューの追加と削除
      「SQL日英」や「SQL英日」などのメニューを Excel の右クリックメニューに追加したり削除したりできます。
    • 辞書の作成
      あらかじめ用意されたシート ("DBDIC") から、日英変換用の辞書を作成します。
    • 取消線文字を除外したコピー
      選択範囲のセルにあるテキストをコピーしますが、取り消し線が付いている文字は除外されます。
    • SQL文の変換
      「SQL日英」メニューを選択すると、選択範囲の英字を日本語に変換します。逆に「SQL英日」メニューを選択すると、日本語を英字に変換します。変換には、あらかじめ作成した辞書が使用されます。

    使い方

    1. このコードを VBA エディタに貼り付けます。
    2. 必要に応じて、シート "DBDIC" の内容を変更します (日英変換用の辞書データです)。
    3. マクロを実行したいセルまたはシート上で、右クリックメニューから追加したメニューを選択します。

    注意

    • このマクロは、作成されたシート ("DBDIC") を前提としています。このシートの内容を変更したり削除したりすると、マクロが正しく動作しなくなる可能性があります。

    2014年8月26日火曜日

    ExcelVBA : 全シート内太文字の名前作成

    開いているブックの全シート中の太文字のセル位置で、そのテキストで「名前」を作成するマクロだ。

    何に使うかってーと、簡易目次だ。
    ブック内の任意シートで「CTRL+G」を押せば名前を選択して、そのセルにジャンプしてくれる。
    ま、同じ内容の太文字テキストが複数あった場合、あきらめてくれ。
    その名前のみ、手動で名前作成すればイイんじゃね?

    VBAのつぼ
    今回のシート内全セルループは印刷範囲とデータ存在範囲のうち小さい行桁でループをまわしてる。
    セルループのテンプレにつかえし。

    ループ中、DoEventとStatusBar文字変更は、暴走疑惑を和らげる為だ。


    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差分を採る…なんて使い方もあるぞ。
    ただし、オブジェクトは無視してるから我慢してくれ。