| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2079 人关注过本帖
标题:DLL封装的自定义菜单怎样调用宏
只看楼主 加入收藏
sdhtli
Rank: 1
等 级:新手上路
帖 子:115
专家分:0
注 册:2008-10-6
结帖率:72.22%
收藏
 问题点数:0 回复次数:21 
DLL封装的自定义菜单怎样调用宏
请教各位老师在用DLL封装自定义菜单代码中怎样调用另一个宏

怎么上传附件呢
1.rar (35.17 KB)


[[it] 本帖最后由 sdhtli 于 2008-10-16 09:13 编辑 [/it]]
搜索更多相关主题的帖子: DLL 定义 菜单 封装 
2008-10-13 20:43
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
算了。
2008-10-13 21:48
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
没听明白楼主你想问什么

VB QQ群:47715789
2008-10-14 08:50
sdhtli
Rank: 1
等 级:新手上路
帖 子:115
专家分:0
注 册:2008-10-6
收藏
得分:0 
附件上传了请各位老师看看
2008-10-16 09:13
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
[bo][un]Joforn[/un][/bo]回复[bo][un]sdhtli[/un] 在 2008-10-13 20:43 的发言:[/bo]


程序代码:
Private JXMBAR As Object
Private WithEvents Caishan As  Sub Class_Initialize()
    Dim WJT As Object
    
    On Error Resume Next
    Set WJT = GetObject(, "Excel.Application")

    Dim JXMBAR As  If WJT Is Nothing Then
      MsgBox "获取Application对象出错!"
    Else
      For Each JXMBAR In  JXMBAR.Name = "望江婷的工具" Then ("望江婷的工具").Delete
      Next
      
      (Name:="望江婷的工具").Visible = True
      ("望江婷的工具").Position = msoBarTop
    
      Set Caishan = ("望江婷的工具").Controls.Add(Type:=msoControlButton)
      With Caishan
        .BeginGroup = True   '分隔线
        .Caption = "删除数据(&D)"
        .FaceId = 9404
        .Style = msoButtonIconAndCaptionBelow
        .ToolTipText = "删除当前工作表的数据"
     End With
    End If
End Sub

Private Sub Class_Terminate()
  On Error Resume Next
  JXMBAR.Delete
End Sub

Private Sub Caishan_Click(ByVal Ctrl As , CancelDefault As Boolean)
  Dim xlapp As Object, xlbok As Object, xlsht1 As Object

  On Error Resume Next
  
  Set xlapp = GetObject(, "Excel.Application")  '取得Excel实例[/color]
  Set xlbok = xlapp.ActiveWorkbook              '取得Excel实例下活动工作簿[/color]
  If MsgBox("确实要清除现有的数据,重新使用吗?", vbInformation + vbYesNo, "警告") = vbYes Then xlbok.Sheets("收支").Range("A3:E65536").Formula = ""
End Sub


[[it] 本帖最后由 Joforn 于 2008-10-16 11:42 编辑 [/it]]

VB QQ群:47715789
2008-10-16 11:40
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
程序代码:
'对了,把你的Excel中的程序也要修改一下。改成下面的就行了。
Private QQQ As Object

Private Sub Workbook_BeforeClose(Cancel As Boolean) '代码注册
  Set QQQ = Nothing
  Shell "Regsvr32 /u /s " & Chr(34) & ThisWorkbook.Path & "\caidan.dll" & VBA.Chr(34), vbHide
End Sub

Private Sub Workbook_Open() '代码引用
  Shell "Regsvr32 /s " & Chr(34) & ThisWorkbook.Path & "\caidan.dll" & VBA.Chr(34), vbHide
  Set QQQ = New yyy
End Sub

Private Sub Workbook_Deactivate()
  On Error Resume Next
  ("望江婷的工具").Delete
End Sub

[bo]以上代码经过测试,VB6+Office2003[/bo]

VB QQ群:47715789
2008-10-16 11:50
sdhtli
Rank: 1
等 级:新手上路
帖 子:115
专家分:0
注 册:2008-10-6
收藏
得分:0 
谢谢Joforn版主,版主就是版主,你太棒了,高超!就是这个效果,但是我还是不明白,你是怎么在VB中引用的下面的宏,现在自定义菜单就一个,如果再增加一个菜单在执行另一个宏又怎么引用呢?我太菜,能不能再教教我呢?
2008-10-16 13:35
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
Private WithEvents Caishan As '定义一个按钮,Name为Caishan
Private WithEvents Command1 As '定义一个按钮,Name为Command1

VB QQ群:47715789
2008-10-16 13:38
sdhtli
Rank: 1
等 级:新手上路
帖 子:115
专家分:0
注 册:2008-10-6
收藏
得分:0 
谢谢版主,我去你的博客了,你还是位帅哥呢
2008-10-16 13:41
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
你要做几个按钮,就定义几个,然后再一一生成按钮对象并赋值。
最后在类中的按钮事件中写相应的处理代码就行了。
其实你只要注意下面的两条代码就行了。

Private WithEvents Caishan As '有了这一条,我们在写代码时就可以像使用普通控件一个为这个按钮写事件处理过程(在代码编辑状态下的下拉列表就可以看到你定义的按钮名)
Set Caishan = ("望江婷的工具").Controls.Add(Type:=msoControlButton) '定义Caishan按钮为新Add的按钮对象

Private Sub Caishan_Click(ByVal Ctrl As , CancelDefault As Boolean)
  '选择代码编辑器的下拉列表就可以自动生成这个过程,你只要在这里写相应的处理过程就OK了。
End Sub

VB QQ群:47715789
2008-10-16 13:47
快速回复:DLL封装的自定义菜单怎样调用宏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027790 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved