« ■Word VBA(ツールの構成と配布方法について その2) | トップページ | @アニメ(2009夏アニメOP、ED) »

2009年6月14日 (日)

■Word VBA(カスタムツールバーの不具合?)

今回は、前回前々回でツール用.docを作成している中で作成したユーザ設定ツールバー(以降、カスタムツールバー)についてあれこれ書いてみたいと思います。
Excelのカスタムツールバーとだいぶ勝手が違うのと、これはWordのバグでは?と思うところがあります。

bearing事象1.
まず、Word2000/2003のカスタムツールバーでは、マクロボタンを追加すると
Project.モジュール名.プロシージャ名という名前がデフォルトで設定されますね。
これを別の日本語名に変更したとすると、名前は日本語名になりますが、ツールチップ(ポップアップヒント)は変更前のプロシージャ名のままです。(私だけじゃないですよね?)
Excelではこうはなりません。
Tooltip

pout事象2.
さらに、マクロボタンにはショートカットキーを登録できますが、ショートカットキーを名前やツールチップに表示することができません。どうも、カスタムツールバー上の右クリック[ユーザー設定]-[オプション]タブ-[ボタン名と一緒にショートカットキーを表示する]をチェックするとできそうな雰囲気があるのですが、これをチェックしても何も起こりません。
Userset
ExcelではOnkeyメソッドで登録しておくときちんと表示してくれます。
しかたないので、事象1、2を解消するために以下のとおり、AutoOpen()に、ツールチップを名前に置き換える処理を組み込んでいます。

'カスタムツールバーのツールチップ設定
Private Sub SetMyToolBar()
    Dim myBar As CommandBar
    Dim lKeyString As String
    For Each myBar In Application.CommandBars
        If myBar.Name = cMyBarName Then
            For Each oCbt In myBar.Controls
                lKeyString = GetKeyString("Project." & oCbt.OnAction)
                If lKeyString = "" And (oCbt.Caption Like "*+*") Then
                    oCbt.Caption = Left(oCbt.Caption, InStrRev(oCbt.Caption, " ") - 1)
                ElseIf Not (oCbt.Caption Like "*" & lKeyString & "*") Then
                    oCbt.Caption = oCbt.Caption & " " & lKeyString
                End If
                oCbt.TooltipText = oCbt.Caption
            Next
            Exit For
        End If
    Next
    Set oCbt = Nothing
    Set myBar = Nothing
End Sub
Tooltip2

sad事象3.
ショートカットキーではほかにも厄介な点があります。前回にも触れましたが「マクロの隠蔽」です。
Excelでは、マクロボタンを作成したあと隠蔽するためにPrivateに変更するのですが、これをWordでやると、
マクロをクリックして実行するには問題ありませんが、ショートカットキーが無効になってしまいます。
どうにかしてくれ、Microsoftさん!


gawk事象4.
次に、カスタムツールバーにマクロボタンを追加した後にモジュール名を変更すると、

Macroerror
『マクロが見つからないか、またはマクロに対するセキュリティ レベルが高く設定されているためマクロが無効にされています。』

というエラーが発生するようになります。始めは理由が分からずカスタムツールバーのボタンを再作成したりしていました。
ま、これはなんとなくうなずけます。デフォルトでProject.モジュール名.プロシージャ名という名前が割り当てられるという辺りから、ボタンとプロシージャの関連付けはモジュール名も関係しているということなのでしょう。
しかし、これもExcelではこうはなりません。

これらはどう考えてもバグではないですかね、Microsoftさん!
Word2007は使ったことが無いので解消されているのかもしれませんが、Excelと比べるとどうにも厄介です。。。

« ■Word VBA(ツールの構成と配布方法について その2) | トップページ | @アニメ(2009夏アニメOP、ED) »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ■Word VBA(ツールの構成と配布方法について その2) | トップページ | @アニメ(2009夏アニメOP、ED) »