现有段程序,关键原代码如下:
cn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filename & " ;Persist Security Info=False;Extended Properties= 'Excel 8.0;HDR=NO'"
cn2.open
rs2.open "select * from [Sheet1$] ", cn2, adOpenDynamic, adLockOptimistic
这样就只能显示默认名字为工作表叫sheet1的内容,但我现在有一个表有两个工作表,分别为“材料”、“价格”、我想实现的功能为:用一个combo显示此表中的所有工作表名称,即下拉combo时可选择“材料”跟“价格”工作表,点击“确认”按钮后导入对应的工作表内容,请问:1、红色[Sheet1$]部分如何修改?2、combo中的内容如何添加?
cn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filename & " ;Persist Security Info=False;Extended Properties= 'Excel 8.0;HDR=NO'"
cn2.open
rs2.open "select * from [Sheet1$] ", cn2, adOpenDynamic, adLockOptimistic
这样就只能显示默认名字为工作表叫sheet1的内容,但我现在有一个表有两个工作表,分别为“材料”、“价格”、我想实现的功能为:用一个combo显示此表中的所有工作表名称,即下拉combo时可选择“材料”跟“价格”工作表,点击“确认”按钮后导入对应的工作表内容,请问:1、红色[Sheet1$]部分如何修改?2、combo中的内容如何添加?
但是combobox中的text又怎么跟我要显示的表格的单元表对应呢??我要导入的表是通过CommonDialog1导入的,所以工作表每次都不一样?
combobox1.additem "worksheet.name"这样对吗??
可能是我没有解释清楚,我再把解释一下。
通过点击一个command控件用commondialog选择任意表,表的名称显示在一个textbox中,同时将选择的表中的工作薄(默认为sheet1、sheet2等)显示在一个combo的下拉框中,如我问题中的“材料”、“价格”,选择任何一个工作薄后,点击“打开表”按钮将此工作薄中的内容显示在datagrid中,我用的是adodc连接datagrid,原代码如下:
Dim fso As New FileSystemObject, ts As TextStream
CommonDialog1.Filter = "EXCEL文件(*.xls)|*.xls" '打开EXCEL文件
CommonDialog1.ShowOpen
If CommonDialog1.filename = "" Then
MsgBox "没有选择文件"
Else
If fso.FileExists(CommonDialog1.filename) Then
Set ts = fso.OpenTextFile(CommonDialog1.filename)
Dim filename As String
Dim cn2 As New ADODB.Connection
Dim rs2 As New ADODB.Recordset
Dim mystr As String
rs2.CursorLocation = adUseClient
filename = CommonDialog1.filename
DataGrid1 = ts.ReadAll
ts.Close
Me.Caption = CommonDialog1.FileTitle
cn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filename & " ;Persist Security Info=False;Extended Properties= 'Excel 8.0;HDR=NO'"
cn2.open
For Each newsheet In ThisWorkbook.Sheets
Combo1.AddItem newsheet.name
rs2.open "select * from [&sheet1 ] ", cn2, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs2
Next
end if
end if
以上代码只能打开选择的表中默认的sheet1中的内容,现在我就是想通过选择不同的工作薄名称显示不同的工作薄内容。
按照你的说法,是需要新建一个工作表跟工作薄吗?而我这里用的是: cn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filename & " ;Persist Security Info=False;Extended Properties= 'Excel 8.0;HDR=NO'",会不会有冲突?
再选择sheet(比如在combobox里选)再查询数据 (比如点击command2)
我明白你的意思了
那代码呢??
THANX!