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

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
快表VBA动态加载dll
显示全部楼层 倒序浏览 发表日期 2025-12-25 21:10:04 26次阅读 0次回复
快表VBA动态加载dll

适用版本:企业版、高级企业版
说明:
1.如果是自定义类名,如print,把Dim KB As Object = TryCast(assembly.CreateInstance("ExcelViewVBDotnet.ExcelViewVBDotnet.StandardInterface"), Object)改成Dim KB As Object = TryCast(assembly.CreateInstance("ExcelViewVBDotnet.ExcelViewVBDotnet.print"), Object);如果是第三方,写第三方的全部名称。
2.以下用快表中dll为例,代码1:模版vba,代码2:调用模版vba。
  1. Imports SpreadsheetGear
  2. Imports C1.Silverlight
  3. Imports C1.Silverlight.C1MessageBoxButton
  4. Imports C1.Silverlight.C1MessageBoxIcon
  5. Imports Newtonsoft.Json
  6. Imports Newtonsoft.Json.Linq
  7. Imports Microsoft.VisualBasic
  8. Imports System.IO
  9. Imports System.Text
  10. Imports System.Net
  11. Imports System.Windows.forms
  12. Namespace ExcelViewVBDotnet
  13.    Public Class StandardInterface
  14.        '预留位置1
  15.        '预留位置2
  16.        Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  17.        Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
  18.            EV = Excel
  19.            Excel.GetLock()
  20.            AW = Excel.ActiveWorkbook
  21.            Range = AW.ActiveWorksheet.Range
  22.            Excel.ReleaseLock()
  23.                   

  24.        End Sub'打开时执行事件

  25.        Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)

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

  27.        Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)

  28.        End Sub'单元格编辑完成后执行事件

  29.        Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)
  30.                 Call loadDll()
  31.        End Sub'按钮/标签点击事件

  32.        Public Sub FollowHyperlink(sender As Object)

  33.        End Sub '暂不支持
  34.           
  35.                    Public Sub LoadDll()
  36.             Dim client As New WebClient()
  37.             AddHandler client.OpenReadCompleted, AddressOf OnDllDownloaded
  38.             '加载快表编译的DLL(DLL放在服务器的DLL目录中)
  39.             client.OpenReadAsync(New Uri("DLL\文件名.dll", UriKind.Relative))
  40.         End Sub

  41.         Private Sub OnDllDownloaded(sender As Object, e As OpenReadCompletedEventArgs)
  42.             If e.Error Is Nothing Then
  43.                 Dim part As New AssemblyPart()
  44.                 Dim assembly As Reflection.Assembly = part.Load(e.Result)
  45.                 Try
  46.                      Dim KB As Object = TryCast(assembly.CreateInstance("ExcelViewVBDotnet.ExcelViewVBDotnet.print"), Object)
  47.                     '执行加载DLL中的方法。
  48.                     kb.test2()
  49.                 Catch ex As Exception
  50.                     '忽略错误'兼容旧版
  51.                 End Try
  52.             End If
  53.                        
  54.                        
  55.         End Sub

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

  1. Imports SpreadsheetGear
  2. Imports C1.Silverlight
  3. Imports C1.Silverlight.C1MessageBoxButton
  4. Imports C1.Silverlight.C1MessageBoxIcon
  5. Imports Newtonsoft.Json
  6. Imports Newtonsoft.Json.Linq
  7. Imports Microsoft.VisualBasic
  8. Imports System.IO
  9. Imports System.Text
  10. Imports System.Net
  11. Imports System.Windows.forms
  12. Namespace ExcelViewVBDotnet
  13.    Public Class StandardInterface
  14.        '预留位置1
  15.        '预留位置2
  16.        Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  17.        Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
  18.            EV = Excel
  19.            Excel.GetLock()
  20.            AW = Excel.ActiveWorkbook
  21.            Range = AW.ActiveWorksheet.Range
  22.            Excel.ReleaseLock()
  23.        End Sub'打开时执行事件

  24.        Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)

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

  26.        Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)

  27.        End Sub'单元格编辑完成后执行事件

  28.        Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)
  29.                 If e.Shape.Name = "Button 1" Then
  30.                         '填写符合条件后执行的代码
  31.                         C1MessageBox.Show("你好aa!", "提示", OK, C1MessageBoxIcon.Information)
  32.                 End If
  33.        End Sub'按钮/标签点击事件

  34.        Public Sub FollowHyperlink(sender As Object)

  35.        End Sub '暂不支持
  36.           
  37.            Public Sub test()
  38.                    C1MessageBox.Show("快表你好!", "提示", OK, C1MessageBoxIcon.Information)
  39.            End Sub
  40.           
  41.            Public Sub testaa()
  42.                    C1MessageBox.Show("快表2你好!", "提示", OK, C1MessageBoxIcon.Information)
  43.            End Sub
  44.           
  45.            Public Sub testbb()
  46.                    C1MessageBox.Show("快表3你好!", "提示", OK, C1MessageBoxIcon.Information)
  47.            End Sub
  48.           
  49.    End Class
  50.    
  51.               Public Class print
  52.         Public Sub test2()
  53.             C1MessageBox.Show("你好!", "提示", OK, C1MessageBoxIcon.Information)
  54.         End Sub
  55.     End Class
  56. '  注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
  57. End Namespace
复制代码




联系QQ:2627049059
您需要登录后才可以回帖 登录 | 立即注册

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

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

  • 微信小商店

  • 微信客服

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