快表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。
- Imports SpreadsheetGear
- Imports C1.Silverlight
- Imports C1.Silverlight.C1MessageBoxButton
- Imports C1.Silverlight.C1MessageBoxIcon
- Imports Newtonsoft.Json
- Imports Newtonsoft.Json.Linq
- Imports Microsoft.VisualBasic
- Imports System.IO
- Imports System.Text
- Imports System.Net
- Imports System.Windows.forms
- Namespace ExcelViewVBDotnet
- Public Class StandardInterface
- '预留位置1
- '预留位置2
- Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
- Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
- EV = Excel
- Excel.GetLock()
- AW = Excel.ActiveWorkbook
- Range = AW.ActiveWorksheet.Range
- Excel.ReleaseLock()
-
- End Sub'打开时执行事件
- Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)
- End Sub'单元格选择后执行的事件
- Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)
- End Sub'单元格编辑完成后执行事件
- Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)
- Call loadDll()
- End Sub'按钮/标签点击事件
- Public Sub FollowHyperlink(sender As Object)
- End Sub '暂不支持
-
- Public Sub LoadDll()
- Dim client As New WebClient()
- AddHandler client.OpenReadCompleted, AddressOf OnDllDownloaded
- '加载快表编译的DLL(DLL放在服务器的DLL目录中)
- client.OpenReadAsync(New Uri("DLL\文件名.dll", UriKind.Relative))
- End Sub
- Private Sub OnDllDownloaded(sender As Object, e As OpenReadCompletedEventArgs)
- If e.Error Is Nothing Then
- Dim part As New AssemblyPart()
- Dim assembly As Reflection.Assembly = part.Load(e.Result)
- Try
- Dim KB As Object = TryCast(assembly.CreateInstance("ExcelViewVBDotnet.ExcelViewVBDotnet.print"), Object)
- '执行加载DLL中的方法。
- kb.test2()
- Catch ex As Exception
- '忽略错误'兼容旧版
- End Try
- End If
-
-
- End Sub
- End Class
- ' 注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
- End Namespace
复制代码
- Imports SpreadsheetGear
- Imports C1.Silverlight
- Imports C1.Silverlight.C1MessageBoxButton
- Imports C1.Silverlight.C1MessageBoxIcon
- Imports Newtonsoft.Json
- Imports Newtonsoft.Json.Linq
- Imports Microsoft.VisualBasic
- Imports System.IO
- Imports System.Text
- Imports System.Net
- Imports System.Windows.forms
- Namespace ExcelViewVBDotnet
- Public Class StandardInterface
- '预留位置1
- '预留位置2
- Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
- Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
- EV = Excel
- Excel.GetLock()
- AW = Excel.ActiveWorkbook
- Range = AW.ActiveWorksheet.Range
- Excel.ReleaseLock()
- End Sub'打开时执行事件
- Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)
- End Sub'单元格选择后执行的事件
- Public Sub RangeChanged(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs)
- End Sub'单元格编辑完成后执行事件
- Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)
- If e.Shape.Name = "Button 1" Then
- '填写符合条件后执行的代码
- C1MessageBox.Show("你好aa!", "提示", OK, C1MessageBoxIcon.Information)
- End If
- End Sub'按钮/标签点击事件
- Public Sub FollowHyperlink(sender As Object)
- End Sub '暂不支持
-
- Public Sub test()
- C1MessageBox.Show("快表你好!", "提示", OK, C1MessageBoxIcon.Information)
- End Sub
-
- Public Sub testaa()
- C1MessageBox.Show("快表2你好!", "提示", OK, C1MessageBoxIcon.Information)
- End Sub
-
- Public Sub testbb()
- C1MessageBox.Show("快表3你好!", "提示", OK, C1MessageBoxIcon.Information)
- End Sub
-
- End Class
-
- Public Class print
- Public Sub test2()
- C1MessageBox.Show("你好!", "提示", OK, C1MessageBoxIcon.Information)
- End Sub
- End Class
- ' 注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
- End Namespace
复制代码
|
|
快表帝国客服04