VBA


2013年8月18日

WSHでハッシュ値計算にSHA-1アルゴリズムを利用する

WSHはもう時代遅れなのかもしれない。
ただ、Windows 2000以降のOSにてデフォルトで動作するWSHは魅力的だ。

ところでハッシュ値を算出する方法がなかなか見つからなかったが、MD5とSHA-1アルゴリズムを利用しているソースが紹介されていたので、実際に使用してみるとすぐに利用できた。

papakingの日記

SHA-1もMD5もハッシュ値が衝突する脆弱性が指摘されており、中間者攻撃に利用されるリスクがある。ただ、SHA-256などは.NET Frameworkの特定バージョン以上をインストールしないと利用できないという問題がある。

2007年1月22日

Cell雀

mixiのてつさんからの情報で知ったすごいアプリケーション。

Cell雀というVBAで作られたゲームがある。なぜExcel出なければならないのかというと、仕事中にサボって麻雀が出来るように作られているためだ。

五時までモード(お仕事モード)はぱっと見麻雀とは気づかない。。。
どんなソースコードが組まれているか見たかったが、ロックされていてわからなかった。(でもExcelの場合はある方法でパスワードを解読 or 初期化できてしまうので、見ようと思えば見れるのだが)

2006年12月18日

やっかいなVBA

Excelのマクロで利用されているVBAはVisual Basicの派生だが、VB6では実装されているものがVBAでは実装されていない関係で、使いにくいことこの上ない。
どこが使いにくいかといえば・・・
・sortアルゴリズムが実装されていない
VBAではExcelのソート機能を使うらしい。Visual Basicは確かにソートアルゴリズムを自前で実装しなければならないことに愕然としていた記憶がよみがえった。

・変数にポインタを渡せない関係上、多次元配列が構築できない
多次元配列を動的に生成していこうとすると
$a = array(3)
$b = \$a
のようにポインタを渡してあげる必要がある。ところがVBではこれができない。
幸いなことにApplication.EvaluateメソッドというEvalに互換性がありそうなものがあるのだが多次元配列を文字列で作ってEval評価させようとするとエラーで落ちてしまう。まぁ、これは少し強引という見方もあるだろう。
Application.Evaluate("array(" & "1)(2" & ")"); #これは例外エラー

・連想配列が事実上サポートされていない。VB6のDictionaryが利用できれば良いんだが・・・

VBAをコーディングしている際にとても参考になったサイトがあったので紹介しておきます。
Excel VBAプログラミング講座