1

VbaProject.OTM ファイルのThisOutlookSessionで次を使用して、新しいメールの標準ツールバーに 2 つのカスタム ボタンを追加しています。

Dim outl As Object
Dim msg As Object
Set outl = CreateObject("Outlook.Application")
Set msg = outl.CreateItem(0)
msg.Display (False)

Dim objBar As Office.CommandBar
Dim objButton As Office.CommandBarButton

Set objBar = Application.ActiveWindow.CommandBars("Standard")
Set objButton = objBar.Controls.Add(msoControlButton)

With objButton
    .caption = "button1"
    .OnAction = "macro1"
    .TooltipText = "Description"
    .faceId = 487
    .Style = msoButtonIconAndCaption
    .BeginGroup = True
End With

Set objButton = objBar.Controls.Add(msoControlButton)

With objButton
    .caption = "button2"
    .OnAction = "macro2"
    .TooltipText = "Description"
    .faceId = 2525
    .Style = msoButtonIconAndCaption
    .BeginGroup = True
End With

msg.Close 1

問題は、Outlook が起動するたびにボタンが追加されることです (これは、OTM ファイルを展開しようとしている他のコンピューターに必要です)。ボタンが既に存在する場合、ボタンを追加する前に確認する方法はありますか?

4

1 に答える 1

2

You ボタンは の一部ですtoolbar。したがって、ツールバーの存在を確認してください。

If IsToolbar("Standard") Then 
  '-- do something
  Else 
  '-- create tool bar and add the buttons
End If

またはこれを試してください:

For Each Contrl in Application.CommandBars("Standard").Controls
   If .Caption <> "button1" then
      '-- create it
   End If
Next Contrl

OPのコメントに従って編集:

それでは、エラーキャッチに固執しましょう... (テストされていないコードなので、正確な正しい構文を最後に試してみる必要があるかもしれません)

Dim ctlCBarControl As CommandBarControl
On Error Resume Next    
Set ctlCBarControl = Application.CommandBars("Standard").Controls("button1")

   If Err <> 0 Then
      '-- no button exists, you may add it
      Err = 0
   Else
      '-- the button is there.. 
   End If
End if

* 参照: CommandBar コントロール

于 2013-01-28T16:03:20.780 に答える