周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649371 QQ:2627049059
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
工具栏自定义按钮并执行提取公式、执行SQL语句
显示全部楼层 倒序浏览 发表日期 2015-10-11 13:10:06 9419次阅读 10次回复
admin
2015-10-11 13:10:06
2015-10-11_125345.png


复制下面的代码到快表VBA编辑器中,生成DLL后应用于系统。不支持3.9.0以下版本,使用前请将快表升级至3.9.0版本以上。

  1. Imports SpreadsheetGear
  2. Imports System.Windows.forms
  3. Namespace ExcelViewVBDotnet
  4.     Public Class StandardInterface '自定义名称
  5.         '预留位置1
  6.         '预留位置2
  7.         Dim AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  8.                 Dim CF,TS,VW As Object
  9.         Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Forms.WorkbookView)
  10.            Excel.GetLock()
  11.            AW = Excel.ActiveWorkbook
  12.            Range = AW.ActiveWorksheet.Range
  13.            Excel.ReleaseLock()
  14.                   
  15.            CF = OldRoot.Children(1)  '绑定工具条触发,不能测试运行
  16.                    TS = OldRoot.Children(5)         '绑定工具条区域,不能测试运行

  17.                 '工具条添加第一个按钮
  18.                    Dim BT1 As New Button
  19.            BT1.Name = "BT_AN1"       '按钮名,不能与其他按钮名称重复,下同。
  20.            BT1.Content = "第一个按钮"     '按钮显示的名称,自定义写入欲显示的名称。下同
  21.                    BT1.Margin= New Thickness(0, 2, 0, 2)
  22.                    BT1.Padding= New Thickness(13, 3, 13, 3)
  23.                    BT1.Style = Application.Current.Resources("ButtonStyle3")
  24.                    BT1.Foreground =  Application.Current.Resources("Foreground1")
  25.                    TS.Children.Insert(16, BT1)    '插入按钮的位置,多个按钮时顺序往下排
  26.                
  27.                  '位置:2保存3新增4提交5退回6打印7预览8导出9捕获10上传图片11上传附件12插入行13插多行14删除行15查找16最后
  28.                
  29.                 '工具条添加第二个按钮
  30.                    Dim BT2 As New Button
  31.            BT2.Name = "BT_AN2"
  32.            BT2.Content = "第二个按钮"
  33.                    BT2.Margin= New Thickness(0, 2, 0, 2)
  34.                    BT2.Padding= New Thickness(13, 3, 13, 3)
  35.                    BT2.Style = Application.Current.Resources("ButtonStyle3")
  36.                    BT2.Foreground =  Application.Current.Resources("Foreground1")
  37.                    TS.Children.Insert(17, BT2)
  38.                
  39.                
  40.                                 
  41.                 '工具条添加第三个按钮,点击按钮时执行提取公式
  42.                    Dim BT3 As New Button
  43.            BT3.Name = "BT_TQ"
  44.            BT3.Content = "执行提取公式"
  45.                    BT3.Margin= New Thickness(0, 2, 0, 2)
  46.                    BT3.Padding= New Thickness(13, 3, 13, 3)
  47.                    BT3.Style = Application.Current.Resources("ButtonStyle3")
  48.                    BT3.Foreground =  Application.Current.Resources("Foreground1")
  49.                    AddHandler BT3.Click, Sub()
  50.                    CF.Tag="1,缴费查询"     '公式类型:1为提取,2为传递。逗号后加执行的公式名称,与表间公式中的显示的名称一致
  51.                    CF.Text="#执行公式"   '执行提取公式写入"#执行公式",执行SQL语句写入"#执行SQL"
  52.                                  End Sub
  53.                    TS.Children.Insert(18, BT3)

  54.                 '工具条添加第四个按钮,点击按钮时执行SQL语句
  55.                    Dim BT4 As New Button
  56.            BT4.Name = "BT_SQL"
  57.            BT4.Content = "执行SQL语句"
  58.                    BT4.Margin= New Thickness(0, 2, 0, 2)
  59.                    BT4.Padding= New Thickness(13, 3, 13, 3)
  60.            BT4.Style = Application.Current.Resources("ButtonStyle3")
  61.                    BT4.Foreground =  Application.Current.Resources("Foreground1")
  62.                    AddHandler BT4.Click, Sub()
  63.                    CF.Tag="Delete From T_33 Where F_117 = '张建斌'|删除完毕!"   '执行的SQL语句,语句后竖线分隔符及后面显示的文字为在语句执行完成后弹出提示内容。
  64.                    CF.Text="#执行SQL"
  65.            End Sub
  66.                    TS.Children.Insert(19, BT4)
  67.                
  68.                 '工具条添加第五个按钮,点击按钮时执行公式或SQL时加入IF判断示例
  69.                    Dim BT5 As New Button
  70.            BT5.Name = "BT_SQL2"
  71.            BT5.Content = "有条件执行语句"
  72.                    BT5.Margin= New Thickness(0, 2, 0, 2)
  73.                    BT5.Padding= New Thickness(13, 3, 13, 3)
  74.            BT5.Style = Application.Current.Resources("ButtonStyle3")
  75.                    BT5.Foreground =  Application.Current.Resources("Foreground1")
  76.                    AddHandler BT5.Click, Sub()
  77.                         AW.WorkbookSet.GetLock()
  78.                                     IF Range("E2").Value <> "2015" Then        '执行公式或语句时,可以自由写入相关代码,这里以IF作示例。
  79.                                                         Messagebox.show("对不起!当前年份不允许删除,请更改年份后执行!")
  80.                                                 Else
  81.                                                         CF.Tag="Delete From T_33 Where F_117 = '张建斌'|删除完毕!"
  82.                                                            CF.Text="#执行SQL"
  83.                                                 End if
  84.                         AW.WorkbookSet.ReleaseLock()
  85.            End Sub
  86.                    TS.Children.Insert(20, BT5)
  87.                
  88.                 '工具条添加第六个按钮,点击按钮时执行提取公式
  89.                    Dim BT6 As New Button
  90.            BT6.Name = "BT_TQ2"
  91.            BT6.Content = "传递填报收款凭证"
  92.                    BT6.Margin= New Thickness(0, 2, 0, 2)
  93.                    BT6.Padding= New Thickness(13, 3, 13, 3)
  94.                    BT6.Style = Application.Current.Resources("ButtonStyle3")
  95.                    BT6.Foreground =  Application.Current.Resources("Foreground1")
  96.                    AddHandler BT6.Click, Sub()
  97.                    CF.Tag="2,传递填报收款凭证"     '公式类型:1为提取,2为传递。逗号后加执行的公式名称,与表间公式中的显示的名称一致
  98.                    CF.Text="#执行公式"   '执行提取公式写入"#执行公式",执行SQL语句写入"#执行SQL"
  99.                    End Sub
  100.                    TS.Children.Insert(21, BT6)
  101.                
  102.                    '位置:2保存3新增4提交5退回6打印7预览8导出9捕获10上传图片11上传附件12插入行13插多行14删除行15查找16最后
  103.         End Sub'打开时执行事件

  104.         Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Forms.RangeSelectionChangedEventArgs)

  105.         End Sub'单元格选择后执行的事件

  106.         Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Forms.RangeChangedEventArgs)
  107.            
  108.         End Sub'单元格编辑完成后执行事件

  109.         Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Forms.ShapeActionEventArgs)

  110.         End Sub'按钮/标签点击事件

  111.         Public Sub FollowHyperlink(sender As Object)
  112.            
  113.         End Sub '暂不支持

  114.     End Class
  115.     '注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。

  116. End Namespace

复制代码



标签
工具栏
dan_dan

2015-10-11 14:30:54

支持一下,应用场景广泛,
msg::::Option Strict On 不允许后期绑定
杨晨颖 发表于 2015-10-20 16:59
msg::::Option Strict On 不允许后期绑定

截图,看看你代码怎么写的。
联系QQ:1327452797
杨晨颖 发表于 2015-10-20 16:59
msg::::Option Strict On 不允许后期绑定

不用点击编辑并运行,直接点击右上角的 生成最终DLL文件
联系QQ:2982200781 快表售前支持3
7314564

2016-10-14 19:09:31

收藏了,不错的例子
7314564

2016-11-8 14:53:59

这样的例子太好了,希望都出。
7314564

2016-11-8 14:55:50

例里再加个一个如何在VBA中调用系统的按钮,如保存按钮,这样在系统保存完后,再执行自己的代码,就更好了。
admin

2016-11-9 08:52:27

7314564 发表于 2016-11-8 14:55
例里再加个一个如何在VBA中调用系统的按钮,如保存按钮,这样在系统保存完后,再执行自己的代码,就更好了 ...

其他帖子已经有示例可以直接下载  
参考:http://www.kuaibiao.cn/forum.php?mod=viewthread&tid=3212
7314564

2016-11-12 16:05:49

admin 发表于 2016-11-9 08:52
其他帖子已经有示例可以直接下载  
参考:http://www.kuaibiao.cn/forum.php?mod=viewthread&tid=3212

您提供的例子,我看懂了,谢谢。

精彩评论10

dan_dan

2015-10-11 14:30:54

支持一下,应用场景广泛,
msg::::Option Strict On 不允许后期绑定
杨晨颖 发表于 2015-10-20 16:59
msg::::Option Strict On 不允许后期绑定

截图,看看你代码怎么写的。
联系QQ:1327452797
杨晨颖 发表于 2015-10-20 16:59
msg::::Option Strict On 不允许后期绑定

不用点击编辑并运行,直接点击右上角的 生成最终DLL文件
联系QQ:2982200781 快表售前支持3
7314564

2016-10-14 19:09:31

收藏了,不错的例子
7314564

2016-11-8 14:53:59

这样的例子太好了,希望都出。
7314564

2016-11-8 14:55:50

例里再加个一个如何在VBA中调用系统的按钮,如保存按钮,这样在系统保存完后,再执行自己的代码,就更好了。
admin

2016-11-9 08:52:27

7314564 发表于 2016-11-8 14:55
例里再加个一个如何在VBA中调用系统的按钮,如保存按钮,这样在系统保存完后,再执行自己的代码,就更好了 ...

其他帖子已经有示例可以直接下载  
参考:http://www.kuaibiao.cn/forum.php?mod=viewthread&tid=3212
7314564

2016-11-12 16:05:49

admin 发表于 2016-11-9 08:52
其他帖子已经有示例可以直接下载  
参考:http://www.kuaibiao.cn/forum.php?mod=viewthread&tid=3212

您提供的例子,我看懂了,谢谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |