VBA and Access
生活随笔
收集整理的這篇文章主要介紹了
VBA and Access
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
>>.用vba連接ACESS:
Set?Conn=?Server.CreateObject("ADODB.Connection")
Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?&?Server.MapPath("sample.mdb")
Conn.Open>>.用vba連接EXCEL,打開EXCEL記錄集:
Set?connExcel?=?Server.CreateObject("ADODB.Connection")
connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?&?Server.MapPath(?"InputExcel\sample.xls")?&";Extended?Properties='Excel?8.0;HDR=YES;IMEX=1';"?
connExcel.Open?connStr
Set?rs?=?Server.CreateObject("ADODB.Recordset")
rs.Open?"Select?*?From?[sheet1$]",?connExcel,?0,?1>>.vba數據處理[轉載]:
===============================================
用Excel+VBA+SQL?Server進行數據處理使用Excel+VBA+SQL?Server進行數據處理是一種簡單有效方法,掌握以下基礎知識實現快速入門(掌握excel/vba/sqlserver各1%內容,你就能成為數據處理高手的:)):一、Excel基礎知識
了解工作簿(Workbook)、工作表(Worksheet)、單元格(Cell)等的基本概念,熟悉一些基本操作。二、SQL?Server基礎知識
參見
1、數據庫有關概念:數據庫、表、記錄、字段
A)數據庫(Database)
B)表(Table)、記錄(行,Row,Record)、字段(列,Column,Field)...2、常見數據操作的SQL命令:select,?insert?,?update?,delete三、VBA基礎知識:
1、基本概念。
2、基本控制結構:
·:程序按順序執行;
·命令:if?條件?then
<如果條件成立執行本語句塊>
end?if?或:if?...?then
...?
else?
...
end?if?或:if?...?then
...
elseif?...
...
else
...
end?if?
等。。·命令:for?i=??to???
...
next或do?while?...
...
loop3、在VBA中操縱對象,先理解操縱EXCEL工作表和數據庫對象:將值寫入EXCEL單元格,如:thisworkbook.worksheets("sheet1").cells(1,2)=1234444從EXCEL單元格取得數值,如:x=thisworkbook.worksheets("sheet1").cells(1,2)數據庫操作:cn.open?...(建立數據連接對象)
rs.open?...?(建立數據集對象)
x=rs("...")?(讀取數值)
rs.close?(關閉rs)
cn.close?(關閉cn)cn.execute?(執行)...四、例子sub?test()?'定義過程名稱
Dim?i?As?Integer,?j?As?Integer,?sht?As?Worksheet?'i,j為整數變量;sht?為excel工作表對象變量,指向某一工作表
Dim?cn?As?New?ADODB.Connection?'定義數據鏈接對象?,保存連接數據庫信息;請先添加ADO引用
Dim?rs?As?New?ADODB.Recordset?'定義記錄集對象,保存數據表
Dim?strCn?As?String?,strSQL?as?String?'字符串變量strCn?=?"Provider=sqloledb;Server=或IP地址;Database=數據庫名稱;Uid=用戶登錄名;Pwd=密碼;"?'定義數據庫鏈接字符串'下面的語句將讀取數據表數據,并將它保存到excel工作表中:畫兩張表想像一下,工作表為一張兩維表,記錄集也是一張兩維表
strSQL?=?"select?字段1,字段2?from?表名稱"?'定義SQL查詢命令字符串
cn.Open?strCn?'與數據庫建立連接,如果成功,返回連接對象cn
rs.Open?strSQL,?cn?'執行strSQL所含的SQL命令,結果保存在rs記錄集對象中
i?=?1
Set?sht?=?ThisWorkbook.Worksheets("sheet1")?'把sht指向當前工作簿的sheet1工作表
Do?While?Not?rs.EOF?'當數據指針未移到記錄集末尾時,循環下列操作
sht.Cells(i,?1)?=?rs("字段1")?'把當前記錄的字段1的值保存到sheet1工作表的第i行第1列
sht.Cells(i,?2)?=?rs("字段2")?'把當前字段2的值保存到sheet1工作表的第i行第2列
rs.MoveNext?'把指針移向下一條記錄
i?=?i?+?1?'i加1,準備把下一記錄相關字段的值保存到工作表的下一行
Loop?'循環
rs.Close?'關閉記錄集,至此,程序將把某數據表的字段1和字段2保存在excel工作表sheet1的第1、2列,行數等于數據表的記錄數'下面的語句將讀取excel工作表數據,并將之簡單計算后存入數據庫,這里使用上面程序中的一些變量
'假設分別讀取工作表sheet1第5行至第500行的第8列和第9列已存在的數據,然后將它們相乘,并將積存入數據庫的某個表
strSQL=""?'清空上面定義的變量
for?i=5?to?500?'循環開始,i從5到500
strSQL=strSQL?&?"insert?into?表名(字段)?values("?&?sht.cells(i,8)*sht.cells(i,9)?&?")?;"?'構造SQL命令串
next
'至此生成一串SQL命令串,保存的內容大概為:insert?into?表名(字段)?values(數值1);insert?into?表名(字段)?values(數值2);...
cn.execute?strSQL?'執行該SQL命令串,如果SQL命令沒有錯誤,將在數據庫中添加501個記錄;也可以用rs.open?strSQL,cn?執行
cn.close?'關閉數據庫鏈接,釋放資源
end?sub=====================================>>.聽說可以用一條語句實現記錄集導入excel表,而且不是用循環的,不知道是真是假,等待高手的回答。=====eg
Sub?AddNew_Click()
'引用Microsoft?ActiveX?Data?Objects?2.x?LibraryDim?cnn?As?New?ADODB.ConnectionDim?myPath?As?StringDim?myTable?As?StringDim?SQL??As?StringmyPath?=?ThisWorkbook.Path?&?"\Database1.accdb"myTable?=?"MainTable"On?Error?GoTo?errmsgcnn.Open?"Provider=Microsoft.Ace.OLEDB.12.0;Data?Source="?&?myPathIf?Range("A1").CurrentRegion.Rows.Count?=?1?Then?Exit?SubSQL?=?"insert?into?"?&?myTable?&?"?select?CustName,Cell?from?[Excel?12.0;Database="?&?ActiveWorkbook.FullName?&?"].[AddNew$]"cnn.Execute?SQLMsgBox?"數據已經添加到數據庫!",?vbInformation,?"添加數據"cnn.CloseSet?cnn?=?NothingExit?Sub
errmsg:MsgBox?Err.Description,?,?"錯誤報告"
End?Sub
轉載于:https://blog.51cto.com/ericfu/1871958
總結
以上是生活随笔為你收集整理的VBA and Access的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: a标签实现不跳转点击
- 下一篇: 梦到给婆婆买鞋什么意思