求助 matlab与VB混编,应用COM技术
程序代码:
Private zxd As hanyzxd.hanyzxdClass Dim xlApp As Excel.Application '定义EXCEL类 Dim xlBook As Excel.Workbook '定义工件簿类 Dim xlsheet As Excel.Worksheet '定义工作表类 Dim a() As Double, k As Integer Private Sub Form_Load() Me.Picture = LoadPicture("C:\Users\Administrator\Desktop\2013韩越\vb\zhuti.jpg") Me.AutoRedraw = True Set zxd = New hanyzxd.hanyzxdClass End Sub Private Sub Form_Resize() Me.PaintPicture Me.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight End Sub Private Sub Option1_Click() If Text1.Text <> "" Then Command1.Enabled = True End If End Sub Private Sub Option2_Click() If Text1.Text <> "" Then Command1.Enabled = True End If End Sub Private Sub Option3_Click() If Text1.Text <> "" Then Command1.Enabled = True End If End Sub Private Sub Text1_Change() If Text1.Text <> "" Then Option1.Enabled = True Option2.Enabled = True Option3.Enabled = True End If End Sub Private Sub Command1_Click() '打开EXCEL过程 If Dir("C:\Users\Administrator\Desktop\2013韩越\vb\shuju.bz") = "" Then '判断EXCEL是否打开 Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类 xlApp.Visible = True '设置EXCEL可见 Set xlBook = xlApp.Workbooks.Open("C:\Users\Administrator\Desktop\2013韩越\vb\shuju.xlsx") '打开EXCEL工作簿 If Option1.Value = True Then Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表 End If If Option2.Value = True Then Set xlsheet = xlBook.Worksheets(2) End If If Option3.Value = True Then Set xlsheet = xlBook.Worksheets(3) End If xlsheet.Activate '激活工作表 xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL中的启动宏 Else MsgBox ("EXCEL已打开") End If End Sub Private Sub Command2_Click() k = Text1.Text ReDim a(1 To k, 3) For i = 1 To 3 For j = 1 To k a(j, i) = xlsheet.Cells(j + 1, i) Next j Next i xlBook.RunAutoMacros (xlAutoClose) '执行EXCEL关闭宏 xlBook.Close (True) '关闭EXCEL工作簿 xlApp.Quit '关闭EXCEL Set xlApp = Nothing '释放EXCEL对象 End Sub Private Sub Command3_Click() Dim x() As Variant, y() As Variant, wuchazxd As Variant k = Val(Text1.Text) ReDim x(k) As Variant, y(k) As Variant For i = 1 To k x(i) = a(i, 1) y(i) = a(i, 2) Next i Call zxd.HYzxd(1, wuchazxd, x, y) Text2.Text = Format(wuchazxd, "0.000000") End Sub
运行之后,Call zxd.HYzxd(1, wuchazxd, x, y)错误,但不用改变任何程序,直接运行就能得出正确的结果!个人认为是wuchazxd的定义有问题,不知道怎么解决