ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    Excel VBA その3

    このエントリーを含むはてなブックマーク はてなブックマーク - Excel VBA その3 あとで読む
    前回の記事を書いたときに比べて、だいぶVBAの使い方が分かってきた。

    Excel VBA その2

    ・VBAは、VisualBasicのサブセットという位置づけで、WordやExcel、Accessに固有の機能が使えるように、特別な関数やオブジェクトが別途用意されているということだった。
    ・VisualBasicのオブジェクト指向の機能・仕様については、まだ調べてみる必要が残っている。

    ●VBScript
    VBのコードの書き方に慣れてくると、VBScriptでちょっとしたツール、バッチプログラムも組めるようになった。
    ただし、MicroSoftの意向では、WSH(VBScript、JScript等のWindows付属のインタープリター)は、今後PowerShell(C#もどきの新しいインタープリター)に置き換えていきたいらしいので、VBScriptは強化される予定はないかもしれない。

    さて、VBAだが、
    ・インターネットの操作
    ・データベースの操作
    は、一応OKになった。

    ●VBAでインターネットの操作
    インターネットの操作は、HTTPの通信に関して、InternetExplorerオブジェクトを利用することで、たいていのことができる。

    (参考)
    三流君VBAでIE操作 InternetExplorer.Applicationを操作する

    ただし、IEを使うとCPUの稼働率が100%になる場合があるので、処理は重たいのかもしれない。
    IEを使わない方法として、
    ・WinSock(Windowsのソケット通信)
    ・WinInet等のAPI
    など別の方法も紹介されていた。
    =HTTP通信の処理は一つのクラスとかにしておいて、後で入れ替えればいいかもしれない。
    =引数としてURLを渡せば、戻り値としてレスポンス結果(HTML)を返す関数とかクラスのようなもの。

    富豪的プログラミングで対処するなら、とりあえずマルチコアのCPUを使えば良い。
    =IEオブジェクトを生成しても、CPUの稼働率はすぐには100%にならなかった。

    ●VBAでデータベースの操作
    とりあえずExcel VBAからAccessを利用する方法を調べた。
    以下の本が大変参考になった。
    仕事に役立つExcel&Accessデータベース連携テクニック

    AccessのSQLは、MySQLに比べて使いづらいと思った。(Access2003でテスト)

    ・LIMIT句が使えない。
    なんとAccessにはLIMIT句がない!
    その代わりに、結果セットのデータ数を絞り込む「TOP」という構文が用意されていた。

    MySQLで
    「SELECT * FROM table LIMIT 1」
    と書くところを、Accessなら
    「SELECT TOP 1 * FROM table」
    と書く。

    AccessのTOPという句はくせもので、ランキングのような機能になっており、LIMIT句とは違う。

    ALL、DISTINCT、DISTINCTROW、TOP 述語

    先頭または末尾から指定の数までの間にあるレコードを、ORDER BY 句によって決められた順番で返します。


    TOP 述語は、同じ値を持つレコードをすべて選択します。



    データのページ送り(ページング)は、変なSQLを書かなきゃいけないみたいなので、将来的にはAccessよりもMySQLを使った方が良いような気がする。

    SQLで件数を指定する方法

    サブクエリにせずに JOIN で結合させると10,000 件のデータでも、表示に1秒かかりませんでした



    Excel VBAからMySQLを利用するには、MySQLのODBCドライバ(MySQLの開発元が配布している)をインストールして設定すればOKらしい。
    とりあえずExcel VBAからデータベースを利用するなら、Accessが手軽だったので、しばらくはAccessを使ってみることにする。
    =場合によっては、Access VBAを使って、機能の一部をデータベース側に持たせても良いだろう。

    Excel VBAからMySQLを利用する方法は、そのうちテストしてみたい。
    =AccessとMySQLのパフォーマンスを計測してみるとか。

    仕事に役立つExcel&Accessデータベース連携テクニック仕事に役立つExcel&Accessデータベース連携テクニック
    (2004/02)
    古川 順平

    商品詳細を見る
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/258-20e33cbc

    FC2Ad