我第一次将我的 VBA 代码迁移到 VSTO,以创建适用于 Excel 的 COM 加载项。我能够将所有代码转换为 vb。 不幸的是,我在VS2017中创建Windows表单时遇到困难。我尝试添加窗口窗体,但我没有看到任何Windows窗体。相反,我只能添加用户控件 (WPF(。
我确实设法使用 XAML 创建了表单,但我遇到的最大问题是如何初始化表单。
进口如下
Imports Microsoft.Office.Interop.Excel
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms
我在下面的代码中看到以下错误
处理 MyBase.Load -->找不到事件"Load">
在此之后,我没有看到任何工作。有人可以解释一下我们如何处理加载和卸载用户控件 (WPF( 吗?这也是为什么我无法导入窗口表单的原因。
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim RefSht As Object
Dim TableList() As String
Dim IDTable As String
Dim count As Integer : count = 0
Dim TextBox1 As System.Windows.Controls.TextBox
Dim TextBox2 As System.Windows.Controls.TextBox
Dim TextBox3 As System.Windows.Controls.TextBox
Dim TextBox4 As System.Windows.Controls.TextBox
Dim TextBox5 As System.Windows.Controls.TextBox
Dim TextBox6 As System.Windows.Controls.TextBox
Dim cmbIDTable As System.Windows.Controls.ComboBox
Dim wb As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook
RefSht = wb.Worksheets("RefSheet")
On Error Resume Next
IDTable = ReportSheet.Range("IDTable")
TextBox1.Text = ReportSheet.Range("Title")
TextBox2.Text = ReportSheet.Range("Component")
TextBox3.Text = ReportSheet.Range("Selection")
TextBox4.Text = ReportSheet.Range("Parameters")
TextBox5.Text = ReportSheet.Range("Summary")
TextBox6.Text = ReportSheet.Range("Category")
TableList = Split(GetTableListData(), ";")
cmbIDTable.ItemsSource = TableList
While IDTable <> TableList(count)
count = count + 1
End While
cmbIDTable.SelectedItem = count
End Sub
在问题背后遇到很多麻烦之后,我发现我的VS中没有安装Windows表单。我已经包含了这个包,我现在能够工作了。