2005-02-27
@ [vba] ExcelVBAパーフェクトマスター Second Edition
ExcelPettyCashBookの機能向上のために買いました。1週間ほどかけて読んでいたのですが、相当な厚さ(4cmぐらい)だけあって、「ExcelVBAはこれ一冊あれば完璧っしょ」と言えるぐらいVBAの機能が網羅されています。個人的に「おお!」と思ったのは、グラフの描画やユーザフォーム(とコントロール)の解説で、もう目から鱗でした。特にグラフの描画については資料が少ないので重宝すると思います。
というわけで、ExcelPettyCashBookのバージョンアップを頑張ろうと思います。
@ [vba] VBAモジュールをVBAでexport/importする
WorkbookはVBProjectプロパティを持っているので、これを使用すればOKです。例えば、あるワークブックの全てのモジュール(標準モジュール、クラスモジュール、ユーザフォームなどなど)をファイルに出力するには
Public Sub Export()
Dim objComponent As Object
For Each objComponent In ThisWorkbook.VBProject.VBComponents
objComponent.Export "D:\tmp\" & objComponent.Name
Next objComponent
End Sub
という感じになります。逆にあるファイルのVBAモジュールを新しいワークブックにimportするコードは下記のようになります。
Public Sub Import()
Dim objWorkbook As Workbook
' ワークブックを新規作成
Set objWorkbook = Application.Workbooks.Add
' import
objWorkbook.VBProject.VBComponents.Import "D:\tmp\MyModule.bas"
End Sub
「VBAのコード自体もVBAを使って操作出来るなんて、Microsoftも結構気が利くじゃん」と久々にM$を見直しました。
@ なんでこんなことを調べていたかというと...
Excelの仕様なのか、シートを追加しては削除するということを繰り返していくと、ファイルのサイズが肥大化していくので、ExcelPettyCashBookのリリース前には
- 新しいワークブックを作成して
- READMEなどの必要なシートを古いExcelPettyCashBookから新しいものにコピーし
- モジュールも手作業で新しいものにコピペする
なんていうクソ面倒なことをしていたのです。こういうことを手作業でやっていると、時間はもったいないし、ミスは発生するしでどうしても自動化したかったんです。というわけで本腰入れて調べて、これを自動化するスクリプトをruby + win32oleで書いてみました。これでちょっとはリリース頻度も上がるかもしれません。
ちなみに先ほどの「ExcelVBAパーフェクトマスター」にもVBProjectについては載ってませんでした。まぁ普通の人はこんなの知らなくてもいいですよね...
2007-02-27
@ 2007年から振替休日の定義が変わったらしい
Wikipediaに書いてあったのですが
2007年施行)では、国民の祝日が日曜日である場合に、その直後の「国民の祝日でない日」が休日となる。たとえば、5月3日(憲法記念日)・5月4日(新しいみどりの日)・5月5日(こどもの日)のうちいずれかが日曜日である場合に、5月6日が休日となる。(従来は、5月3日や5月4日が日曜日であっても5月6日は休日とならなかった。)
らしいです。つまり今までプログラムで振替休日の判定をやっているような処理は今年から定義が変わったので若干修正が必要なわけですね。例えば2008年の5月6日はこの新しい仕様によって休日となります。ちなみに2009年は9月にも「国民の休日」が適用され、休みが増えるそうです。
休日が増えるのはサラリーマンにとっては大変うれしいことですが、休日の判定はどんどん泥くさい方向になっていきますねぇ。
# tpircs [はじめまして。ExcelPettyCashBook、つい一週間ほど前から使わせてもらってますm(。。)m。バージョン..]
# おいぬめ [マジですか!? ありがとうございます。自分以外で使ってる人がいるなんて思っていなかったので、ただただ驚きです。精進し..]
# mazurkja [description fZOurBDyB3pC http://tinyurl.co.uk/foks]