t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

VBA 絶版良書 VBAによるTCP/IPプログラミング入門

今回はちょっと風変わりなVBA本を紹介。

本日時点で、Amazonの中古で12,000円という恐ろしい値段がついているが、マルツオンラインというショップのサイトで定価で買えてしまった。

https://www.marutsu.co.jp/pc/i/549354/www.marutsu.co.jp

電子部品のパーツショップのようなのだが、なんでそんなショップで買えるのかは謎。
古本市場Amazonが最後の砦だと思っていたが、そうでもないようだ。

さて、この本はVBAでメールの送受信とか、FTPのアップロード・ダウンロード、Webサーバーと通信してhtmlやjpegなどの取得などを扱っている。

メールといっても、Outlookの機能を利用したりはしない。

たとえばOutlookなどでメール受信ボタンを押したとき、舞台裏ではメーラーとメールサーバーがこんなやり取りをはじめる。

 メーラー「今から通信します。」
 サーバー「OK」

 メーラー「ユーザー名は○○」
 サーバー「OK」

 メーラー「パスワードは○○」
 サーバー「OK、ようこそ」

 メーラー「どれくらい溜まってますか?」
 サーバー「300通、20MBです」

 メーラー「一覧をください」
 サーバー「はい、どうぞ」

 メーラー「1番のメールをください」
 サーバー「はい、どうぞ」

 メーラー「1番のメールを消してください」
 サーバー「消しました。」

 メーラー「2番のメールをください」
 サーバー「はい、どうぞ」

もちろん、日本語ではなく専用のコマンドである。
裏側でやっているので一般の方は見たことが無いと思う。

この書籍では、この裏方の通信を自前でやろうという話である。
他の言語では割と書籍が出そろっているが、VBAでやろうという人はあまりいないためか、解説書はこの本以外に見つからない。
Amazonレビューでも5つ星が4件、4つ星が1件の高評価で、間違いなく良書である。


しかし、残念な点がある。

全部で7章構成となっているが、そのうち2章、4章、7章は標準のVBA機能だけでは実施できず、VB6に同梱されているWinsockコントロール、Inetコントロールを使用する。しかし今さらVB6を入手するわけにもいかず、これらは丸ごとスキップすることにした。
新規でこれらのコントロールを追加はできないが、サイトからサンプルプログラムをダウンロードしてそれをいじることはできるらしい。
※やってみようと思ったがサイトからダウンロードしたサンプルのZIPにパスワードがかかっており、書籍内にも記載がなかったので出版社に問合せ中である。

WinsockやInetといったコントロールは面倒なAPI呼び出しを隠蔽して簡単に扱えるようにしてくれるコントロールである。
それを使えば多少は簡単にコーディングできるのだが。。

3章と5章はWinsockコントロールやInetコントロールの代わりにAPIを直接使用したプログラミングである。
より詳細な部分まで自前で実装することになるが、こちらの方が力はつくと思うので楽しみである。

コーディングの前に、そもそもサンプルがちゃんと動くのかどうか確認したいので、とりあえず出版社からZIPパスワードの回答があるまでは積ん読にしようと思う。

2015/11/07追記

zipのパスワードの件について出版社から回答があり、zipの中のreadme.txtに書籍のどこを見れば良いか書いてあるとのこと。
※2重のzipになっていて外側のzipはパスワードがかかっていない。
完全に見落としていた。CQ出版社さんごめんなさい。

winsockコントロールを使ったサンプルは、うまく動作しなかった。
何かまた設定を見落としているかもしれない。
とりあえず、APIを使った方のサンプルはちゃんとソケット通信できているようなのでこれで良しとしよう。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。