當前位置:首頁 » 編程語言 » vbaexcelsql

vbaexcelsql

發布時間: 2022-03-05 09:16:24

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

Ⅱ 用VBA語言調用sql資料庫數據到excel中

VBE 工具 引用,選中 Microsoft ActiveX Data Object 2.8 Library
我不清楚是不是UFDATA_013_2008表的VENDOR列的數據,如果不是,你自己改一下SQL語句吧,sql = "select VENDOR from UFDATA_013_2008"

Sub SQL數據導入()

Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim str As String
Dim sql As String
Dim i As Integer

str = "Provider=SQLOLEDB;Data Source=SQLSERVER伺服器名或IP;DATABASE=資料庫;UID=用戶名;PWD=密碼"
cn.Open str
Set rs = New ADODB.Recordset
sql = "select VENDOR from UFDATA_013_2008"
rs.Open sql, cn, adOpenStatic, adLockOptimistic

If Not rs.EOF Then
For i = 1 To rs.RecordCount
Sheet2.Cells(i, 1).Value = rs.Fields(0).Value
Next i
rs.MoveNext
End If
rs.Close
cn.Close
End Sub

Ⅲ VBA Excel sql Sheet1

sql查詢excel,最常見的問題是數據類型不統一,ado打開excel表,默認掃描前八行數據,來猜測每列的數據類型,你看看你的close列數據類型是否統一.

子易空間站 - Excel 培訓專家

Ⅳ 關於excel中利用vba將數據保存到SQL的問題

INSERT INTO TT(iYear,iMonth,Dept,Amount,Account,FA) SELECT iYear,iMonth,Dept,Amount,Account,FA" & _
" FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','DataSource=""" & strTempSourcePath & "\Source\"& strTempSourceName & _
""";User ID=ADMIN;Password=;Extended properties=Excel5.0')...[" & strSheetName(iMonth) & "$]

Ⅳ 用VBA將EXCEL內容一次性導入SQL

用VBA將EXCEL內容一次性導入SQL
'工具->引用->Microsoft ActiveX Date Object 2.0
Public Sub SaveData()
Dim Cnn As ADODB.Connection
Dim SQL As String

Set Cnn = New ADODB.Connection

'建立於資料庫的鏈接
'這里根據你的實際值修改ConnectionString = "Driver=SQL Server;Server=<a href="https://www..com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8D%E7%A7%B0&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">伺服器名稱</a>;Database=資料庫;Uid=賬號;Pwd=密碼;"
With Cnn
.Provider = "SQLOLEDB"
.ConnectionString = "Driver=SQL Server;Server=mxb\sqlexpress;Database=test;Uid=sa;Pwd=xiaoma;"
.Open
End With

'保存數據
r = Range("A65534").End(xlUp).Row
For i = 1 To r
'拼sql
SQL = "insert into T values('" & Cells(i, 1) & "','" & Cells(i, 2) & "'," & Cells(i, 3) & ")"
Cnn.Execute SQL
Next
Cnn.Close
Set Cnn = Nothing
MsgBox "保存成功"

End Sub

上面是通過VBA,插入數據到資料庫,下面是從SQL查詢Excel,然後直接insert into到資料庫,也可以用資料庫導入向導
--查詢excel2007
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]
--查詢excel2003
select * from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\2003.xls";Extended properties=Excel 5.0')...[Sheet1$]

Ⅵ EXCEL VBA里怎麼用SQL 的SELECT 語句

可以做到,但不是三言兩語能說清楚的。至少VBA程序不會太短

如果用手工操作,不藉助VBA,可以利用Excel的「數據-導入外部數據」菜單將SQL中的表先導入到Excel中,那麼Excel數據與SQL數據的比較就變成了兩個Excel表列的比較,很容易用數組公式或相關函數標識出重復的數據項的。

Ⅶ vba,sql與excel的關系

Excel可以通過VBA代碼調用SQL資料庫中的數據,這是通過運行VBA內置的方法,引用sql語言的文本作為參數來實現的

Ⅷ 在excel中用vba實現與sql資料庫的數據比較

先建立一個sheet通過數據頁簽中自其它來源,將資料庫中的資料導入。然後再建立一個sheet通過數據頁簽中的現有連接,然後通過sql語句就可以比較那兩個sheet中的內容了。以後直接點擊刷新數據就可以了

Ⅸ 在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

Ⅹ 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

熱點內容
手機手勢密碼忘了怎麼辦 發布:2025-01-12 17:14:51 瀏覽:486
這手機配置有什麼顏色的電視機 發布:2025-01-12 17:02:19 瀏覽:933
閣源碼 發布:2025-01-12 16:48:08 瀏覽:131
組裝機箱搭建伺服器 發布:2025-01-12 16:46:58 瀏覽:512
風險資產配置理論有哪些 發布:2025-01-12 16:46:13 瀏覽:982
小程序分銷源碼 發布:2025-01-12 16:42:41 瀏覽:48
linux查看系統硬體 發布:2025-01-12 16:34:26 瀏覽:969
安卓手機怎麼設置獨享標志 發布:2025-01-12 16:27:56 瀏覽:933
我的世界如何把材質包放進伺服器 發布:2025-01-12 16:11:14 瀏覽:57
使用hmailserver搭建郵件伺服器 發布:2025-01-12 16:05:43 瀏覽:810