2012年03月28日

Excel2003からExcel2010に移行するにあたって

Excel2003で構築したマクロをExcel2010に移行する場合、いくつか注意点がありましたので連携したいと思います。
あくまで色々と実験してみた結果の個人的な意見です。賛否両論あろうかと思いますので、適宜自分に都合のよいところを取り入れていただければ幸いです。
実験結果は都合により、載せられませんが。。。


1. Excel2003で行を右クリックした時の「形式を選択して貼付け」機能のコントロールIDは変更になりました。よって、このIDを使用しているコードはOffice2007以下かどうか判定し分岐する必要があります。
残念ながら、具体的なコードは都合により載せられないです。。。ごめんなさい。
755で全文検索して見つかる場合は要注意です。
他にも変更になったIDがありそうですが、簡単に調べた限りでは見つけられませんでした。

2. Excel2007から最大行数が増えました。よって、Excel2003で65536のようにハードコーディングしている場合(例えばデータ件数を調べる処理など)は、不具合がでやすいです。
必ずRows.Countを利用し、Excel2003でもExcel2010でも動作するように修正しましょう。
特に65537とかは気づきにくいので、これもRows.Count + 1などと変換しましょう。
推奨は6553で全文検索してみることです。

3. Excel2010では時々、VBAの実行時間が長すぎると、MsgBoxが表示されなくなります。
その場合はMsgBoxのオプションにあるシステムモーダル化(もしくはアプリモーダル化)オプションを指定します。(vbSystemModal もしくは vbApplicationModal)
vbSystemModalはExcel2003にもあるため、コンパイルエラーは発生しません。

4. xlsmに移行するか、xlsの互換モードでいるか悩むところです。が、xlsの互換モードのままを推奨します。なぜならば、xlsmに変換した場合、影響が変換したからか、Office2010のマクロの問題なのかの切り分けが困難であること。もしかしたら、Office2003で再現するか再度確認が必要になるかもしれないことがあること。そして、xlsxやxlsmはある程度の容量を超えると警告なしにデータが保存されないことがある点を考えると、互換モードのままをユーザに推奨するよう説得するのが得策です。

5. よくExcel2010のVBAは遅いと聞きます。大量データを用意し、自前のテキストロード処理を実装している場合、Excel2010のほうが厳密に測った結果速くなりました。
これの原因は互換モードとかではなく、単純に事前にVBAのコンパイルをしていないせいだと思います。コンパイルすれば共に最低でもほぼ同じ速度で動作する実験結果を得ました。

6. Excel2000から脈々と続く、Formで入れたコマンドボタンのサイズやフォント、位置が変わるバグは、Excel2003、Excel2007、Excel2010でも発動します。ただし発動条件はそれぞれのバージョンで違うようです。絶対に全ボタンを押下したり、スクロールさせてみてください。特にスクロール範囲をVBAで変更している場合は要注意です。その場合、Excel2010ではボタンサイズが勝手に変わりました。変わってしまうExcelファイルはどうあがいても変わってしまいます。その場合は問題ないファイルをベースに作りなおしたほうが早いです。試行錯誤したり、ボタンだけを再配置しても無駄のようです。

7. マクロの有効化は、Excel2003は毎回有効にするか聞いてきますが、Excel2010では一度確認するとリセットするまで有効にしたことを覚えてくれます。これは逆にユーザが操作性に疑問を持つので教育が必要です。

8. 印刷プレビューの描画範囲がExcel2010では小さくなるため、若干見にくくなることをユーザに理解させる必要があります。

9. 描画のずれは、Excel2003でもExcel2010でも同じように発生します。よって、Excel2003でギリギリ印刷する設定の場合はExcel2010ではずれる可能性がありますが、少し余裕をもたせたレイアウトの場合や自動でセル幅を広げる場合は、レイアウトのズレは気にしなくてよさそうです。

10. ファイルの保存先をCドライブの直下にしている場合は、変更させるほうが良いでしょう。特にWindows 7ではユーザのスキルレベルによっては動かないなどの苦情を聞くことがありそうです。よって、マニュアル等でマクロの配置先をユーザを納得させる必要があります。

最後に。

11. CommandBarsを使っているマクロについては検証していません。リボンインタフェースになったことで、もしかしたらそのままでは使えない可能性がありそうです。こちらは余裕ができれば別途検証してみたいと思います。

12. Office自体の操作性の違いについては、事前に違いが大きいことを説明してから、細かなことを説明し、バージョンが変わり大きく違うことになったと説明する方が良いでしょうか。先に細かなことを説明してから最後にバージョンが大きく変わって、操作性が変わったといっても納得されにくい気がします。説明の順序の問題ですが。
posted by Kiruahさん at 00:07| Comment(7) | TrackBack(0) | ノウハウ

2012年03月27日

Excelキャプチャツール1.1を実践投入しようとして感じた雑多なこと

Excelキャプチャツール1.1を実践利用してみて、やっぱりまだ環境依存が強いところがあるなと感じました。

まずは私の環境では、SHIFTを押すまでスクロールが開始しないのですが、Windows 7では勝手にスクロールが開始したりします。これはもしかしたら、非同期のキー状態取得方法が問題か、キーをそもそも変えたほうがいいかもしれません。

次に、これは想定外でしたがWindows7 64ビット、というか64ビットOSではPtrSafeをWin32API宣言部に追加する必要がある点です。

最後は、前はちゃんと撮れていたのですが、Windows xpとOffice2003にて、Excel2003が表示するMsgBoxにシステムモーダル + 全面表示オプションを指定するとどうやら、メッセージボックスをキャプチャできなくなるみたいです。これはMsgBox修正前は取得できていました。

こちらはWindows 7のOffice2010では取得できますし、画面全体キャプチャという逃げ道がありますが、$infoでメッセージボックスの中身を自動取得できないのは残念です。

これら3点について、対応を考えたいなと考えております。

またやっぱりスクロールは遅いです。ここはSendMessage(都合でPostMessageを使っていますが)で、スクロール幅を指定しながらスクロールさせるほうがスクロール幅が分かっているので楽なのですが、IEでのスクロール幅がうまくとれないので残念です。

ここはそろそろ自分のコーディング高速化技術をちょっと適用するタイミングが来てしまったかなとか思います。
先にGetDIBitsするか、それともBitBltの論理演算でやらせるか、色々とやり口はあります。
(というか、GetPixelが遅いのを知っていて使うなという話は置いておいて。。。)

ちょっと高速化も考えないといけないですね。
一部の画面はバージョン0.4まではきれいに撮れていたのになぁ。


あと、今日はUbuntu上でApache + PHP5 + MySQL を入れて、Apache2の設定をいじったり、WordPress + WP Document Revisionを導入してブログを導入したりしておりました。
Ubuntu、、、geditでもいいんだけど、viでもいいんだけど、Sakuraエディタに慣れすぎました。
Javaでテキストエディタを早めに作りたいなとモチベーションがアップした次第です。

作りたいものが多い。。。
特にSubversion + MySQLサーバ。これはGroongaと組み合わせて履歴も残しつつ、リポジトリの中身を全文検索させたいという個人的な野望が。。。
posted by Kiruahさん at 23:37| Comment(0) | TrackBack(0) | 日記

2012年03月24日

Excelによる画面ハードコピー取得ツール 1.1公開

まず最初に謝罪します。1.0のままでマニュアルを記載するつもりでしたが、スクロールに関する機能で仕様を一部変更しました。
その都合で1.1として公開しております。

まだまだ機能的には不完全かなと、時々キャプチャに失敗する等感じるところがあります。
そちらも随時修正していきたいと思います。
あわせてつたない文章ではありますが、マニュアルも同梱いたしました。

こちらのページからダウンロードください。


次はテストデータを自動的に作成するツールを開発したいと考えています。
できれば、DBやインタフェースするファイル(CSVや固定長、XML等)、MQなど、それぞれに正しく情報がマッチングしてデータができるツールが必要です。
今考えているツールがあれば、テストデータを100万件作るのも楽になるはず。

メーラーも欲しいところですが、まずはデータ作成ツールがほしいところです。
posted by Kiruahさん at 14:24| Comment(0) | TrackBack(0) | アナウンス

2012年03月22日

Excelによる画面ハードコピー取得ツール 1.0 ソフトウェアのみ先行公開

Excelハードコピーマクロのバージョン1.0について、
ソフトウェアのみ先行してリリースしました。

まだマニュアルはできておりませんので、
マニュアルができ次第正式にマニュアルを同梱してリリースしたいと思います。

マニュアル無しでもよろしい方は、こちらのページからダウンロードください。
posted by Kiruahさん at 22:13| Comment(0) | TrackBack(0) | アナウンス

2012年03月21日

Excelによる画面ハードコピー取得ツール 1.0は今週末ぐらいに公開予定です

別にそんなに需要が高いとも思えないのですが、
Excel画面ハードコピーの1.0を早ければ今週末、遅ければ来週末に行いたいと考えています。

今現在はマニュアルを製作中です。
同時に機能を少し追加したり、不具合の修正も実施しています。

1. FireFox / Google Chromeでは自動スクロールキャプチャできない点を改善しました。
2. ブラウザのURL、エクスプローラのアドレス、ウィンドウタイトル、メッセージボックスの内容をヘッダーに含められるようにしました。よって、キャプチャ時のウィンドウタイトルやURL、メッセージボックスの内容もテキスト形式で同時に保存できます。
3. スクロール時のスクロール終了の見切りを少し簡単にしました
4. スクロール外の範囲を間違えていました(FireFoxでは画面上部が削られてしまっていました。)

スクロール機能についてはVBA自体のせいもあろうかとは思いますが、やっぱり遅いです。
高速化するためのアイディアはありますが、まずは動作するものを作りたいと考えています。
そして、その後に別のものが必要で、それを先に作ってから高速化と、高速化は後回しになります。
ごめんなさい。

期待している方はいないでしょうが、リリースまでもう少しお待ちくださいませ。
そして、このツールは完全にIT業界の人間向けになってしまっております。
というか、そのような方向けのツールを目指して作っていたわけですが。。。
posted by Kiruahさん at 22:19| Comment(0) | TrackBack(0) | 日記

2012年03月20日

退官パーティ&伊勢神宮へ

3/18に大学院時代の恩師が退官されるとのことで退官パーティに出席してきました。
思ったよりも多くの方が参加されており、厳しいながらも学生想いの大変素晴らしい先生だったんだなと思います。
先生も元気そうで何よりでした。
これからもご活躍されるとのことで、より一層のご活躍をお祈りしております。

さて、それに便乗し、ついでに奥さんと伊勢神宮へ3/17から旅行に行って来ました。
かなり弾丸で、しかも私にとっては珍しく雨がずっと降る旅行になりました。
やっぱり雨だと移動が大変だったのですが、とても楽しかったです。

まずは外宮へ。そして内宮へ行き、お参りしてきました。奥さんは御朱印帳に書いてもらっていましたが、思ったよりシンプルでびっくりしました。
その後、おかげ横丁で食べ歩きしました。少し太りましたがとても楽しかったです。
弾丸旅行のおかげで、猿田彦神社に行くには少し短いし、駅に向かうにはちょっと長いし、「帯に短し襷に長し」ではありませんが、「行くには短し帰りには長し」という状態でしたが、そのまま宇治山田駅のショッピングセンターとやらに行って来ました。
その後は駅周辺で写真をとったり、ぶらぶらして名古屋に戻り一泊しました。

翌日は名古屋から。朝は一緒に名古屋城に行きました。
予想と違い観光メインの城になっており、逆に設備が発展していて残念でした。
時間がないので簡単にまわって、私は退官パーティーへ。
奥さんはさらに名古屋旅行に。

その後名古屋で合流し帰りました。

弾丸だったのでかなり疲れましたが、とても楽しい土日を過ごすことが出来ました。
posted by Kiruahさん at 10:17| Comment(0) | TrackBack(0) | 日記

2012年03月15日

Excelによる画面ハードコピー取得ツール 0.9の公開

画面キャプチャ機能をバージョンアップしました。バージョン0.9まできています。
(公開していないだけで、0.5〜0.8まで順次機能が追加・修正されました。)

ALT+PrintScreenは途中で使わなくなりましたので、これまでのようなキャプチャの失敗がなくなりました。
また、ブラウザのように縦長の画面をキャプチャできるようになりました。
まだまだ使い勝手が悪いですが、もし使えるようであればご自由にご利用くださいませ。

ダウンロードはこちらのページからどうぞ。

ライセンスはApache License 2.0です。

ただし、今はまだたいしたマニュアルがありません。マニュアルを作成し、もう少し安定性や機能拡張ができたら1.0として公開したいと思います。
posted by Kiruahさん at 20:19| Comment(0) | TrackBack(0) | アナウンス