还有,用 VBA 的话,如果做成商业软件,给用户安装以后,用户能看到我的源程序吗?

解决方案 »

  1.   

    呵呵!我给你指一个方向!如果你有MSDN的话,你可以在
    Microsoft Office Development
        Office 97 Documentation
            Office
                Microsoft Office 97/Visual Basic Programmer's Guide
                    chapt 8:...
    找到你想要的内容。但是只是对于菜单的,没有讲按钮如何实现。而且使用的例子是用VB的!
    Good Luck!
      

  2.   

    我大致看了一下,MSDN 里面说的那种好像不是我想要的,我想要的是:
        在用户机器上安装时,不必启动 WORD;
        安装后再启动 WORD 时,会自动出现加入的菜单或按钮;
        用户看不到我的源程序;
        我的程序卸载时,可以彻底删除该按钮及其所在的工具条;
        不论卸载还是安装,用户都只需要运行 setup/unsetup,而不需要在 WORD 里面进行什么操作;
    所以好像写成 Add-In 比较合适,可是我只找到支持 Word2000 的例子,没找到支持 97 的。哪位大侠能指点一下?问题解决后我会给一个令你满意的分数的。
      

  3.   

    做个hook怎么样?找到word的Window Handle ,你就可以用API操作Menu
      

  4.   

    嘻嘻,花了我半个钟头噢!Option ExplicitPrivate Sub cmdAddSampleMenu_Click()
        Dim bar As CommandBar
        Dim pop As CommandBarPopup
        Dim btn As CommandBarButton
        
        Set bar = CommandBars("Menu Bar")
        'Set bar = CommandBars("MySampleCommandBar")
        'If bar Is Nothing Then
        '    Set bar = CommandBars.Add("MySampleCommandBar")
        'End If
        If Not bar Is Nothing Then
            bar.Visible = True
        End If
        
        'On Error Resume Next
        Set pop = bar.Controls.Add(msoControlPopup)
        On Error GoTo 0
        
        If Err = 0 Then
            pop.Caption = "Sample Menu"
            pop.Tag = "SampleMenu"
            pop.Visible = True
            
            Set btn = pop.Controls.Add(msoControlButton)
            btn.Caption = "About Sample Menu"
            btn.OnAction = "AboutSampleMenu"
            btn.Visible = True
        End If
    End SubPrivate Function AboutSampleMenu()
        Dim para As Paragraph
        
        Set para = Paragraphs.Add
        para.Range.InsertAfter "Sample Menu Inserted Text"
        frmAbout.Show
    End FunctionPrivate Sub cmdDeleteSampleMenu_Click()
        Dim bar As CommandBar
        Dim pop As CommandBarPopup
        
        Set bar = CommandBars("Menu Bar")
        On Error Resume Next
        Set pop = bar.FindControl(msoControlPopup, , "SampleMenu")
        If Not pop Is Nothing Then
            pop.Delete
        End If
    End Sub
      

  5.   

    edyang 真是敬业!小弟对大哥的敬仰之情...
    还有:
      一、我不想让用户看到我的源代码,该怎么设置?
      二、这些代码我想应该放到某个.dot里面,可是我就是没找到保存到模板的命令在哪儿,安装程序应该做些什么呢?