excel2007中使用sql语句
补充说明:请问excel2007中有没有办法使用sql语句生成数据表 比如有一张sheet2是明细表 我想用一句sql语句 把select出来的数据显示在sheet1 具体如何操作呢
我听说是可以的 但是找不到这个功能
标准SQL查找代码:
Sub SQL_Excel_2003_2007()
'On Error Resume Next '如果出现错误,忽略,然后执行下一行代码。
Application.ScreenUpdating = False '关闭屏幕刷新,成对出现,提高速度
Application.DisplayAlerts = False '关闭提示,,成对出现,避免出现提示框
------------------------ 参数声明部分 -------------------
Dim cnn, SQL$ '定义数据库连接和SQL语句
Set cnn = CreateObject("adodb.connection") '创建数据库连接
Set rs = CreateObject("adodb.recordset") '创建一个数据集保存数据
----------------------- 设置数据库连接 -------------------
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
'将EXCEL文件作为数据库连接,实际并不打开EXCEL,
'Excel2003版本:cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.Path & "\数据表.xls"
'Excel2007版本:cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.Path & "\数据表.xlsx"
带参数的连接字符串:cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;HDR=yes;IMEX=2';data source=" & ThisWorkbook.FullName
HDR=Yes 代表 Excel 档中的工作表第一行是标题栏,标题只能是一行,不能使多行,或者合并的单元格。
HDR=no 工作表第一行就是数据了,没有标题栏,不使用栏位,则栏位就以f代表,第一列列名就是:f1,第二列列名:f2
IMEX 汇入模式 0 只读 1 只写 2 可读写
当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。 当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。 当 IMEX=2 时为“连结模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
Data Source 存储查询数据来源的工作薄名称,数据库路径为:数据表.xls 或本表:& ThisWorkbook.FullName
---------------------- 设置SQL语句 -------------------
SQL = "select * from [数据表_1$A1:G100] where 姓名='马拉多纳'"
'在Sheet1表内查找列名为:姓名 中所有:马拉多纳 的数据。
'[XXX$A2:G100]的中括号和$为特别数据表标示符,XXX为Sheet名,A2:G100是选取的区域。
'SQL语句是一个字符串,双引号开头和结尾,列名两边无单引号,表示一个字符串:‘马拉多纳’,要用单引号扩上,数字就不用了。
'Nu=36: AA="马拉多纳": set Sh=Sheet1: SQL = "select * from [" & Sh.name & “$] where 姓名=‘” & AA & “’ and 年龄=Nu"
----------------------- SQL结果处理 -------------------
Set rs = cnn.Execute(SQL) '将SQL语句获得的数据传递给数据集
Sheets("结果").Cells.ClearContents '清理保存数据的区域
Sheets("结果").Range("a2").CopyFromRecordset rs '将数据集粘贴到Excel中,左上角为A2,无列名。
'Sheets("结果").Range("b2").CopyFromRecordset cnn.Execute(SQL) '可以不声明Y,直接使用
cnn.Close '关闭数据库连接
Set cnn = Nothing '将CNN从内存中删除。
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub '这就是最简单的EXCEL中SQL的应用 ,其他的都是SQL的运用了 。
Sub SQL_Excel_2003_2007()
'On Error Resume Next '如果出现错误,忽略,然后执行下一行代码。
Application.ScreenUpdating = False '关闭屏幕刷新,成对出现,提高速度
Application.DisplayAlerts = False '关闭提示,,成对出现,避免出现提示框
------------------------ 参数声明部分 -------------------
Dim cnn, SQL$ '定义数据库连接和SQL语句
Set cnn = CreateObject("adodb.connection") '创建数据库连接
Set rs = CreateObject("adodb.recordset") '创建一个数据集保存数据
----------------------- 设置数据库连接 -------------------
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
'将EXCEL文件作为数据库连接,实际并不打开EXCEL,
'Excel2003版本:cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.Path & "\数据表.xls"
'Excel2007版本:cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.Path & "\数据表.xlsx"
带参数的连接字符串:cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;HDR=yes;IMEX=2';data source=" & ThisWorkbook.FullName
HDR=Yes 代表 Excel 档中的工作表第一行是标题栏,标题只能是一行,不能使多行,或者合并的单元格。
HDR=no 工作表第一行就是数据了,没有标题栏,不使用栏位,则栏位就以f代表,第一列列名就是:f1,第二列列名:f2
IMEX 汇入模式 0 只读 1 只写 2 可读写
当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。 当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。 当 IMEX=2 时为“连结模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
Data Source 存储查询数据来源的工作薄名称,数据库路径为:数据表.xls 或本表:& ThisWorkbook.FullName
---------------------- 设置SQL语句 -------------------
SQL = "select * from [数据表_1$A1:G100] where 姓名='马拉多纳'"
'在Sheet1表内查找列名为:姓名 中所有:马拉多纳 的数据。
'[XXX$A2:G100]的中括号和$为特别数据表标示符,XXX为Sheet名,A2:G100是选取的区域。
'SQL语句是一个字符串,双引号开头和结尾,列名两边无单引号,表示一个字符串:‘马拉多纳’,要用单引号扩上,数字就不用了。
'Nu=36: AA="马拉多纳": set Sh=Sheet1: SQL = "select * from [" & Sh.name & “$] where 姓名=‘” & AA & “’ and 年龄=Nu"
----------------------- SQL结果处理 -------------------
Set rs = cnn.Execute(SQL) '将SQL语句获得的数据传递给数据集
Sheets("结果").Cells.ClearContents '清理保存数据的区域
Sheets("结果").Range("a2").CopyFromRecordset rs '将数据集粘贴到Excel中,左上角为A2,无列名。
'Sheets("结果").Range("b2").CopyFromRecordset cnn.Execute(SQL) '可以不声明Y,直接使用
cnn.Close '关闭数据库连接
Set cnn = Nothing '将CNN从内存中删除。
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub '这就是最简单的EXCEL中SQL的应用 ,其他的都是SQL的运用了 。

热门搜索
- 2018-07-318月8号成都出发去色达,自驾游,有2个位置可以结伴
- 2018-07-31这地方热吗?莫干山不错的,下渚湖怎样热不热
- 2018-07-31儿童超过120m要买票吗
- 2018-07-31准备去大理旅游三天,从昆明出发 求大神推荐路线
- 2018-07-31从厦大学生公寓到南普陀寺怎么走,要多长时间到?
- 2018-07-31问一哈从宜宾到济南,怎么走最划算