请问如何让表格控件反映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 , 基础类