当前位置:编程学习 > VB >>

请问如何让表格控件反映Excel工作表数据源的修改?

请问如何让表格控件反映Excel工作表数据源的修改?程序如下:

'把数据由Excel数据源由ADO引入名为“MSHFlexGrid_绑定集中数据”的表格(网格)控件中显示和处理。
    Dim adoCnn As New ADODB.Connection
    Dim adoRst As New ADODB.Recordset
    
    '检查是否与数据源建立了连接
    If adoCnn.State = adStateOpen Then        adoCnn.Close
    
    Dim xlApp As Excel.Application '在通用断定义,因为此变量还将在“取消”按钮单击过程中使用。
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Set xlApp = CreateObject("Excel.Application")
    
    '当在“打开”公共对话框中单击
    CommonDialog1.CancelError = True '    
   'On Error GoTo CancalErrHandler
    
    CommonDialog1.ShowOpen
    
    Set xlBook = xlApp.Workbooks.Open(CommonDialog1.FileName)
    
    Dim SheetCount As Integer
    SheetCount = xlBook.Sheets.Count
    
    'Form2让用户选择工作表之用
    With Form2
        Dim WorkSheetsCount As Integer
        
        .List1.Clear
        For WorkSheetsCount = 1 To xlBook.Sheets.Count
            .List1.AddItem xlApp.Sheets(WorkSheetsCount).Name
        Next WorkSheetsCount
    End With
    
    'Form2.Show
    Form2.Show vbModal

    If Form2.Form2Cancel = vbYes Then
        '检查是否与数据源建立了连接
        If adoCnn.State = adStateOpen Then
            adoRst.Close
            adoCnn.Close
        Else
     End If
        
        '结束 EXCEL 对象
        xlApp.Quit

        '释放 objExcel 对象
        Set xlApp = Nothing
        
        Exit Sub
    End If
    
     xlApp.Quit

    Set xlApp = Nothing
    
    adoCnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security Info=False;" & _
    "Data Source=" & CommonDialog1.FileName & ";" & "Extended Properties='Excel 8.0;HDR=Yes'"

    'Form2.Form2ListText 为全局变量,已设定。
    adoRst.Open "Select  *  From  " & "[" & Form2.Form2ListText & "$]", adoCnn, adOpenKeyset, adLockOptimistic
    'Excel_Adodc.Open "select   *   from     [Sheet1$]", Excel_Conn, adOpenDynamic


    Set Me.MSHFlexGrid_绑定集中数据.DataSource = adoRst.DataSource
    Set adoRst = Nothing
    Set adoCnn = Nothing
    'adoCnn.Close
    
    Text1.Text = MSHFlexGrid_绑定集中数据.Rows
    
    If adoCnn.State = adStateOpen Then
        adoRst.Close
        adoCnn.Close
        MsgBox "原状态为打开,现在已关闭!"
    Else
        MsgBox "原状态为关闭,保持关闭!"
    End If
    
CancalErrHandler:
    Exit Sub


如程序所示,

当启动了此程序后,首先打开一公共对话框,让用户选择外部Excel工作表(主要是让随后的ADO连接取得工作簿) ,选择后关闭Excel, 之后ADO连接外部Excel工作表,并在表格控件MSHFlexGrid中显示出工作表中的数据,最后关闭ADO连接。

上述程序的目的是把用户选定的外部Excel工作表中的数据显示VB的表格控件中, 同时此外部的Excel工作表可以随时打开、编辑或者关闭,VB的表格控件MSHFlexGrid中还可以反应外部Excel工作表数据源的修改。请问如何修改程序可以达到此目的? (数据库引擎为Jet)
上述程序运行时,若另外手工打开Excel工作表则提示不能打开;相反,若在打开Excel工作表后再次运行上述程序,亦有类似提示(先关闭Excel工作表再运行程序则正常)。但如上述程序所示,Excel工作表及ADO连接均已关闭,为何会不允许打开? 请问如何解决?
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,