注册 登录
编程论坛 VB6论坛

求助 matlab与VB混编,应用COM技术

基地苦咖啡 发布于 2017-04-13 22:04, 1342 次点击
程序代码:
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的定义有问题,不知道怎么解决
2 回复
#2
基地苦咖啡2017-04-13 22:05
求助,各位大神
#3
xiangyue05102017-04-14 16:47
没弄过,帮顶
1