A. 在vba中怎么用sql语句吧excel工作表和数据库表连接查询
摘要 一、正常的操作步骤是:
B. 如何在Excel,VBA中执行SQL语句
sub test()
Dim Conn As New ADODB.Connection
Dim strConn As String
Dim strSQL As String
Dim rs As New ADODB.Recordset
strConn = "Provider=sqloledb;Server=192.168.1.111;Database=db2014;Uid=用户名;Pwd=密码;"
Conn.Open strConn
Max_row = Range("A1").CurrentRegion.Rows.Count
for i=1 to Max_row
strSQL = "select name from sales2014 where id='" & range("A" & i).value & "'"
Conn.Execute strSQL
rs.Open strSQL, Conn, 1, 1
range("B" & i).value= rs(0)
rs.Close
Set rs = Nothing
next i
'关闭数据库
Conn.Close
end sub
C. Excel 请问VBA中如何实现SQL 中的SELECT查询
一般是select查询的顺序为:
select
分组字段+聚合函数+from+where+group
by+having+order
by
select查询语句很复杂,最简单的举例如:
select
*
from
[信息库$]
where
性别="男"
从信息库表中找出性别为男的所有数据条目。
D. EXCEL VBA SQL查询与数组
select [仓库$].dg编号,[仓库$].名称,[kk$].数量*[仓库$].数量,[仓库$].备注 from [仓库$],[kk$] where [仓库$].dg编号=[kk$].dg编号
E. EXCEL中的VBA SQL查询与数组的运用。
ERP没有定义成熟或非成熟只是原本设计时没有考虑而已,你不防在SQL里加个字段是定义这个的,ERP界面不能对这个字段的修改你就用excel里面记录完后更新到SQL里面,excel表只当成是修改那个字段内容的工具,只有当产品更新时才需要用excel表了,查询就直接用sql。
F. EXCEL VBA里怎么用SQL 的SELECT 语句
可以做到,但不是三言两语能说清楚的。至少VBA程序不会太短
如果用手工操作,不借助VBA,可以利用Excel的“数据-导入外部数据”菜单将SQL中的表先导入到Excel中,那么Excel数据与SQL数据的比较就变成了两个Excel表列的比较,很容易用数组公式或相关函数标识出重复的数据项的。
G. Excel VBA SQL如何多表联合查询
select abcg.型号,阶段,生产日期,生产数,不良数,销售日期,销售数量 from (select abc.型号,阶段,日期,生产日期,生产数,不良数 from (select a.型号,阶段,日期 from [表A$] a left join (select 型号,生产日期 as 日期 from [表B$] UNION select 型号,销售日期 as 日期 from [表C$]) bc on a.型号=bc.型号) abc left join (select 型号,生产日期,SUM(生产数) AS 生产数,SUM(不良数) AS 不良数 from [表B$] group by 型号,生产日期) bg ON abc.型号=bg.型号 and abc.日期=bg.生产日期) abcg left join (select 型号,销售日期,SUM(销售数量) AS 销售数量 from [表C$] group by 型号,销售日期) cg on abcg.型号=cg.型号 and abcg.日期=cg.销售日期 order by abc.型号,abc.日期
H. 在excel中如何使用vba实现将sql的数据快速写入excel
DimconnAsNewADODB.Connection
connStr="Driver={SQLServer};DataBase=test;Server=(local);UID=sa;PWD=123"
conn.OpenconnStr'连接数据库
DimrsAsNewRecordset
sql="select*froma"'查看表a
rs.Opensql,conn,3,3
ifNotrs.EOFthen
ForiCols=0Tors.fields.Count-1
Sheets(1).Cells(1,iCols+1).Value=rs.fields(iCols).Name
NextiCols
Sheets(1).Cells(2,1).CopyFromRecordsetrs
endif
I. Excel VBA 执行操作SQL
类似这样
'建立连接
Set cnn = New ADODB.Connection
With cnn
.Provider ="Microsoft.ACE.OLEDB.12.0;Extended Properties=excel 12.0"
.Open "你的工作簿路径" &"\你的工作簿名称.xls"
End With
sqls = "select * from [sheet1$]" ' SQL语句
Set rst = cnn.Execute(sqls)
Sheets("sheet3").Range("A1").CopyFromRecordsetrst
J. 用vba通过sql查询xls文件的内容
以下内容引用于excelhome论坛。建议去论坛查看更多信息。
'在Excel中使用SQL语句总结-1:
'************************************标准SQL查找代码:*********************************************************
SubSQL_Excel_2003_2007()
'OnErrorResumeNext'如果出现错误,忽略,然后执行下一行代码。
Application.ScreenUpdating=False'关闭屏幕刷新,成对出现,提高速度
Application.DisplayAlerts=False'关闭提示,,成对出现,避免出现提示框
'---------------------------------------参数声明部分---------------------------------------------------------
Dimcnn,SQL$'定义数据库连接和SQL语句
Setcnn=CreateObject("adodb.connection")'创建数据库连接
Setrs=CreateObject("adodb.recordset")'创建一个数据集保存数据
'---------------------------------------设置数据库连接---------------------------------------------------------
cnn.Open"Provider=Microsoft.ACE.OLEDB.12.0;ExtendedProperties=Excel12.0;DataSource="&ThisWorkbook.FullName
'将EXCEL文件作为数据库连接,实际并不打开EXCEL,
'Excel2003版本:cnn.Open"Provider=Microsoft.jet.OLEDB.4.0;ExtendedProperties=Excel8.0;DataSource="&ThisWorkbook.Path&"数据表.xls"
'Excel2007版本:cnn.Open"Provider=Microsoft.ACE.OLEDB.12.0;ExtendedProperties=Excel12.0;DataSource="&ThisWorkbook.Path&"数据表.xlsx"
'带参数的连接字符串:cnn.Open"provider=microsoft.jet.oledb.4.0;extendedproperties='excel8.0;HDR=yes;IMEX=2';datasource="&ThisWorkbook.FullName
'HDR=Yes代表Excel档中的工作表第一行是标题栏,标题只能是一行,不能使多行,或者合并的单元格。
'HDR=no工作表第一行就是数据了,没有标题栏,不使用栏位,则栏位就以f代表,第一列列名就是:f1,第二列列名:f2
'IMEX汇入模式0只读1只写2可读写
'当IMEX=0时为“汇出模式”,这个模式开启的Excel档案只能用来做“写入”用途。
'当IMEX=1时为“汇入模式”,这个模式开启的Excel档案只能用来做“读取”用途。
'当IMEX=2时为“连结模式”,这个模式开启的Excel档案可同时支援“读取”与“写入”用途。
'DataSource存储查询数据来源的工作薄名称,数据库路径为:数据表.xls或本表:&ThisWorkbook.FullName
'---------------------------------------设置SQL语句---------------------------------------------------------
SQL="select*from[数据表_1$A1:G100]where姓名='马拉多纳'"
'在Sheet1表内查找列名为:姓名中所有:马拉多纳的数据。
'[XXX$A2:G100]的中括号和$为特别数据表标示符,XXX为Sheet名,A2:G100是选取的区域。
'SQL语句是一个字符串,双引号开头和结尾,列名两边无单引号,表示一个字符串:‘马拉多纳’,要用单引号扩上,数字就不用了。
'Nu=36:AA="马拉多纳":setSh=Sheet1:SQL="select*from["&Sh.name&“$]where姓名=‘”&AA&“’and年龄=Nu"
'---------------------------------------SQL结果处理---------------------------------------------------------
Setrs=cnn.Execute(SQL)'将SQL语句获得的数据传递给数据集
Sheets("结果").Cells.ClearContents'清理保存数据的区域
Sheets("结果").Range("a2").CopyFromRecordsetrs'将数据集粘贴到Excel中,左上角为A2,无列名。
'Sheets("结果").Range("b2").CopyFromRecordsetcnn.Execute(SQL)'可以不声明Y,直接使用
cnn.Close'关闭数据库连接
Setcnn=Nothing'将CNN从内存中删除。
'-----------------------------------------------------------------------------------------------------
Application.ScreenUpdating=True
Application.DisplayAlerts=True
EndSub'这就是最简单的EXCEL中SQL的应用,其他的都是SQL的运用了