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的運用了