您的位置:首页 > 数据库

在其他应用程序vba中使用SQL

2017-08-16 14:19 288 查看
阅读原文请点击

摘要: 有时您想在Excel中使用SQL? 我创建这个模块直接得到结果作为字符串(所有项目从fieldloop像这样a / b / c / d用“/”分隔符), 或者你可以调用这个函数到sub并返回一个数组来指定范围在表在Access中查询) 或者甚至直接应用使用ctrl + Shift + Enter的

有时您想在Excel中使用SQL?

我创建这个模块直接得到结果作为字符串(所有项目从fieldloop像这样a / b / c / d用“/”分隔符),

或者你可以调用这个函数到sub并返回一个数组来指定范围在表在Access中查询)

或者甚至直接应用使用ctrl + Shift + Enter的数组格式(记住首先选择多个单元格 - > write = SQL()在左上角conner)

SQL(dataRange As Range,FieldLoop As String,
可选CritA As
String ,可选分隔符作为字符串,可选唯一作为布尔值)

DataRange =包含标题的范围

FieldLoop =要循环的字段的名称,可以使用通配符,如“*” 

或任何字符串如正常查询选择语句CritA =查询条件(应该像这样“Where”和某些条件)

Delimiter =“,”或“/”或任何字符,如果不留下此可选空格,SQL函数将返回字符串如下:“一个分隔符b分隔符c delimiter d” 

Unique = True / False,default = false,使您能够从TableRange

Tada中“SELECT DISTINCT” 您已经在Excel中完成了查询数据。
公共函数SQL(dataRange As Range,FieldLoop As String,可选CritA As String,可选分隔符作为字符串,可选唯一为布尔)
错误GoTo err:

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim TableName As String
Dim StrResult As Variant
Dim strFile As String,strCon As String,strSQL As String

TableName = dataRange.Parent.Name&“$”&dataRange.Address(False,False)

strFile = ThisWorkbook.FullName
strCon =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source =”&strFile _
&“;扩展属性=”“Excel 12.0; HDR =是; IMEX = 1”“;”

设置cn = CreateObject(“ADODB.Connection”)
设置rs = CreateObject(“ADODB.Recordset”)

cn.打开strCon

如果不是唯一=真的
strSQL =“SELECT”&FieldLoop&“FROM [”&TableName&“]”&CritA
其他
strSQL =“SELECT DISTINCT”&FieldLoop&“FROM [”&TableName&“]”&CritA
万一
rs.打开strSQL,cn

用rs
不做(.BOF或.EOF)
If(InStr(1,FieldLoop,“,”,vbBinaryCompare)> 0或FieldLoop =“*”)和Delimiter =“”然后
StrResult = Application.Transpose(.GetRows)
转到下一步:
其他
IfFields(0).Value <>“”Then
StrResult = StrResult&.Fields(0).Value&Switch(Delimiter =“,”,“,”,True,Delimiter)
万一
.MoveNext
万一
循环
结束与
下一步:
如果不是IsArray(StrResult)而不是IsEmpty(StrResult)然后
如果Len(StrResult)> 0那么
SQL = Left $(StrResult,Len(StrResult)) - 1)
其他
SQL =“No Item code Found !!”
万一
其他
SQL = StrResult
万一

ExitF:
退出功能

呃:
Debug.Print err.Number&“ - ”&err.Description
恢复ExitF:
结束功能


阅读原文请点击
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐