我用vb写了一个word的toolbar插件,然后在IDTExtensibility2_OnConnection方法里面调用RemoveToolBar方法,但是为什么不能删除toolbar? RemoveToolBar方法没有错误

解决方案 »

  1.   

    能不能将你做的word的toolbar插件给我一份.[email protected]
      

  2.   

    Option ExplicitImplements IDTExtensibility2Dim WithEvents appHostApp As Word.Application
    Dim WithEvents cbbButton As Office.CommandBarButtonPrivate Sub cbbButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
       Dim conn As New ADODB.Connection
       Dim rs As New ADODB.Recordset
       Dim strSQl As String
       
       Dim sel As Word.Selection
       
       Dim strWordText As String  '用于要复制到WORD中的数据库数据。这里只是用于测试。    '打开ACCESS数据库
       With conn
         If conn.State = adStateOpen Then conn.Close
         .ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Mode=ReadWrite;Persist Security Info=False"
         .Open
       End With
           strSQl = "select  * from test"
       Set rs = conn.Execute(strSQl)
        
        '判断ACCESS中是否拥有数据。
       If Not rs.EOF And Not rs.BOF Then
           strWordText = rs(0)          '将要复制到WORD中的数据
           
           Set sel = appHostApp.Selection       '将数据写到当前word中(光标所在处)
           sel.InsertAfter strWordText   Else
            MsgBox ("没有你需要的数据!")
            Exit Sub
       End If
        
        rs.Close
        Set rs = Nothing
        conn.Close
        Set conn = Nothing
        
    End SubPrivate Sub IDTExtensibility2_OnAddInsUpdate(custom() As Variant)End SubPrivate Sub IDTExtensibility2_OnBeginShutdown(custom() As Variant)End SubPrivate Sub IDTExtensibility2_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
        Set appHostApp = New Word.Application
        Set cbbButton = CreateBar()
    End Sub
    Private Sub IDTExtensibility2_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
        '
       RemoveToolbar
       ' 移除要关闭的引用
       Set appHostApp = Nothing
       Set cbbButton = Nothing
    End SubPrivate Sub IDTExtensibility2_OnStartupComplete(custom() As Variant)
        '
    End SubPrivate Sub objApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
        
    End Sub
    Private Sub objResetBar_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
        
    End Sub
    '增加按扭
    Public Function CreateBar() As Office.CommandBarButton
     
       ' 添加命令条
       Dim cbcMyBar As Office.CommandBar
       Dim btnMyButton As Office.CommandBarButton   On Error GoTo CreateBar_Err   Set cbcMyBar = appHostApp.CommandBars.Add(Name:="Custom", Position:=msoBarTop, Temporary:=True)   ' 指定命令条按钮
       Set btnMyButton = cbcMyBar.Controls.Add(Type:=msoControlButton, Parameter:="增加数据")
       With btnMyButton
          .Style = msoButtonCaption
          .BeginGroup = True
          .Caption = "从数据库中选择数据"
          .ToolTipText = "测试!"
          .Width = "200"
       End With   ' 显示并返回命令条
       cbcMyBar.Visible = True
       Set CreateBar = btnMyButton
       'MsgBox ("成功")
       Exit Function
       
    CreateBar_Err:
       MsgBox Err.Number & vbCrLf & Err.Description
    End Function
    '删除部分
    Private Function RemoveToolbar()
       appHostApp.CommandBars("Custom").Delete
    End Function
      

  3.   

    是不是应该把custom bar上的button先都喀嚓掉呢?
      

  4.   

    不行啊,如果把removeToolbar方法放到每次打开时候执行的话,就可以了
    但是放在结束执行就不行,不知道为什么