Officeのヴァージョンによって処理を切り替える
Officeのヴァージョンに合わせて煽る
私は、別に玄人でも何でもないので、自作のツールに煽りAAを入れる。
中でも気に入っているのが、有名な「ち~んw」のやつw
_________ / \ / /・\ /・\ \ |  ̄ ̄  ̄ | ち~んw | (_人_) | | \ | | \ \_| /
ただ、こいつをメッセージボックスで表示しようとすると、Officeのヴァージョンによってフォントの種類が違うので、表示が崩れる。
この問題に真剣に取り組んだ。
対応
簡単なことで、ApplicationオブジェクトのVersionプロパティで判定すりゃいい。
コーディング
まずは、宣言セクションでAAの部分を定数にしておく。
リスト1 標準モジュールの宣言セクション
Public Const MAKE_USER_SICK_2013 As String = _ " _______" & vbCrLf & _ " / \" & vbCrLf & _ "/ /・\ /・\ \" & vbCrLf & _ "|  ̄ ̄  ̄ ̄ | ち~んw" & vbCrLf & _ "| (_人_) |" & vbCrLf & _ "| \ | |" & vbCrLf & _ "\ \_| /" Public Const MAKE_USER_SICK_2010 As String = _ " _______" & vbCrLf & _ " / \ " & vbCrLf & _ "/ /・\ /・\ \" & vbCrLf & _ "|  ̄ ̄  ̄ | ち~んw" & vbCrLf & _ "| (_人_) |" & vbCrLf & _ "| \ | |" & vbCrLf & _ "\ \_| /"
ちなみに、上が2013以降用で、下が2010用。2007とか2003でやったらどうなるのかは不明。だって、そんなヴァージョンのOfficeが身近にないんだもの。
んで、本体のコードが次のリスト2。
リスト2 標準モジュール
Public Sub makeUserSick(ByVal msg As String) '……(1)' Dim ver As String ver = Application.Version '……(2)' Dim str As String Select Case ver '……(3)' Case "14.0" str = MAKE_USER_SICK_2010 Case "15.0" str = MAKE_USER_SICK_2013 Case "16.0" str = MAKE_USER_SICK_2013 Case Else '……(*)' str = MAKE_USER_SICK_2010 End Select MsgBox msg & vbCrLf & str '……(4)' End Sub
簡単なコードなので説明不要と思うけれど、一応。
まず、(1)の
Public Sub makeUserSick(ByVal msg As String)
で、引数を1つ受け取るようにしている。
ここで受け取ったmsgプラス「ち~んw」AAで煽る、というわけ。
で、(2)の
ver = Application.Version
では、ApplicationオブジェクトのVersionプロパティを取得して変数verにぶち込んでいる。
例えば、Office2013なら、「15.0」が返ってくる。
従って、(3)からの10行
Select Case ver Case "14.0" str = MAKE_USER_SICK_2010 Case "15.0" str = MAKE_USER_SICK_2013 Case "16.0" str = MAKE_USER_SICK_2013 Case Else '……(*)' str = MAKE_USER_SICK_2010 End Select
では、変数verに格納された値に応じて呼び出す定数を変えている。
2016とか使ったことがないから、2013と同じ文字列を呼び出すようにしているけれど、ホントにこれで良いのかは不明w
また、(*)のところでは、2010でも2013でも2016でもなければ2010と同じ文字列を呼び出すようにしているけれど、これまたホントにこれで良いのかは不明w
あとは、(4)の
MsgBox msg & vbCrLf & str
で、引数で受け取った文字列と煽りAAをつなげ、メッセージボックスに表示する。
実行
次のコードで実行する。
リスト3 標準モジュール
Public Sub test() Call makeUserSick("ほげほげ") End Sub
実行結果
Word2013上で実行したのでこうなる。
やっぱりむかつくw
私は、これらのコードをWdCommonと名付けた標準モジュールに書いて、いろんなWordドキュメントにインポートして使い回しているので、ユーザーがわけの分からん操作をしたときに煽る機能をカンタンに実装することができます。ははは。