2010年12月28日火曜日

ハンガリアン記法の意外な歴史とその効用

ハンガリアン記法、使ってますか?
そう、例の「intCount」とか「strFirstName」みたいな、変数の先頭になんか付けるヤツです。

自分は昔は使ってましたが、JavaScript をいじるようになってから (だいたいディスカバ開設の頃ですかね) その影響で徐々に使わなくなって、今はほとんど使わず…という感じです。ただ、なんで使わなくなったのかというのが今まで自分でもよく分からなかったのです。コントロールには依然として接頭辞使ったりもしているので、一貫した理論を主張しにくい感じで、感覚的なものなのかなぁ、というのが正直な感想でした。

で、その理由が今日判明しました。

2010年12月8日水曜日

UserControl プロパティの謎

最近、次のような Excel オートメーションのコードを見かけました(一部抜粋)。

'Only XL 97 supports UserControl Property
On Error Resume Next
oApp.UserControl = True

あれ? と思った方、きっと私以外にもいますよね。
そう、UserControl プロパティは Excel 2000 以降でもふつうにサポートされているので、上のコードは必然性がよく分からないのです。コメントも間違っているように見えますし。

2010年12月4日土曜日

リソース 3 分ハッキング - 参照設定ダイアログ編

前回は Access 本体の "印刷中" ダイアログを改造しました。
今回は、VBE の参照設定ダイアログに挑戦します。

改造前。



リストビューが小さくて使いづらい上に、場所欄のパスが切れてしまって肝心のライブラリ名が分かりません。

一方、改造後。



リストビューが広くなりました。見やすいです。さらに、場所欄のパスが一行に収まりきらない場合は、折り返してすべて表示されるようにしました。

2010年11月29日月曜日

リソース 3 分ハッキング - "印刷中" ダイアログ抑止編

最近 レポート印刷時の "印刷中" ダイアログを抑止する方法という記事を書きました。
記事の概要に書いているように、その記事は某 SNS での回答を元にしています。で、記事ではダイアログ フックによる方法を説明していますが、元スレでは当初、別の方法も提案していました。そちらは汎用性に欠けるので記事には載せませんでしたが、せっかくなのでこのブログの方で取り上げることにします。

2010年11月19日金曜日

Access VBA ユーザなら知っておきたいキーボード ショートカット 10 選

Access VBA ユーザなら知っておきたいキーボード ショートカットを、独断と偏見で 10 個 選んでみました。
知らないとモグリという常識レベルのものから、知る人ぞ知る玄人レベルのものまで、幅広くチョイスしています。中にはショートカットじゃないものも含まれていますが、知っていると役に立つ、という観点から採用しています。

なお、ショートカットのピックアップには雅さんにもご協力いただきました。ありがとうございました。

2010年11月18日木曜日

外国語が文字化けしている VBA コードを読むには

外国語環境で作成されたファイルを日本語版 Access で開くと、VBA コード中の外国語が文字化けすることがあります。
英語なんかは大丈夫ですが、ウムラウトを含むヨーロッパ言語とか中国語などのアジア系言語はかなりの確率で、化けます。


これを、とりあえず文字化けせずに読む方法。

2010年11月17日水曜日

ダブルクリックしたデータファイルのパスを渡すには

次のような要件があるとします。
拡張子 .orz のデータファイルをダブルクリックすると、特定 MDB を起動させて、そのデータファイルを処理させたい。
拡張子 .orz は既存の拡張子とカブっていない、また特定 MDB のパスは固定であるものとします。
方法としては、拡張子の関連付けで、特定 MDB を起動させます。
またその際に、ダブルクリックされたファイルのフルパスを cmd スイッチに渡すようにします。cmd スイッチに渡された値は、VBA で Command 関数経由で参照できます。

Access のコマンド ライン スイッチ - Access - Microsoft Office
Command 関数 - Access - Microsoft Office

以下、詳細。

2010年11月16日火曜日

Dictionary のキーはデータ型を区別するか

ふつう Dictionary のキーには、文字列なら文字列、数値なら数値と、同じデータ型を使います。というか、キーにデータ型が混在するという状況自体が想像つきませんけれど。
しかし、仮にそういう状況があったとしたら、何が起きるのでしょうか。
ほとんど実際の役には立たないと思いますが、興味本位で試してみました。

2010年11月15日月曜日

SELECT * で取得されるフィールドの順序は保証されているか

最近 moug で見かけたスレッドの感想です。

SELECT * FROM ~ で取得されるフィールドの順番

moug のスレッドは半年で消えるため、かいつまんで内容を書いておくと、

Q「SELECT * で取得されるフィールドの順序は保証されているか」
A「保証するという仕様を確認できない以上、保証されていることを当てにすべきではない」

と、そんな内容でした。
上記内容には、自分も まったく異論ありません。
※ 一応 念のためお断りしておきますが、Jet SQL の話です。SQL 一般の話ではありません。

さて、正論は正論として、それとは別に、内部仕様がどうなっているのか推理してみるというマニアックな楽しみ方もアリだと思うので、ちょっと考えてみました。

2010年11月14日日曜日

Access の実行計画

ありがたいことに、ディスカバのようなサイトでも、時おり反応をいただくことがあります。
先日、次のようなコメントをいただきました。
Access の実行計画を見る方法です。
http://d.hatena.ne.jp/seraphy/20080306

2007のレジストリパスについて
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200809/08090018.txt
参考まで。
ありがとうございます。

さて、このコメントが意味するところについてちょっと考えてみたのですが、明確に何かについて質問しているわけではなさそうなので、以下のいずれかではないかと推測できます。