excel vba 與access

下載access

電腦內(nèi)存有限毒坛,下載了一個低版本的access2003蚪缀。
51自學(xué)網(wǎng)對應(yīng)課程有個開放的下載地址
下載好后直接安裝就行修肠。
打開access贺辰,新建一個test數(shù)據(jù)庫。


test

excel vba連接access數(shù)據(jù)庫

Option Explicit
Sub 連接數(shù)據(jù)庫()
    '第一步:告訴電腦,我們要用ADO饲化,就是引用ADO工具莽鸭。點擊工具-引用-勾選0biects 2.8Microsoft hetivex Data Obiects 6 1
    
    '第二步:創(chuàng)建連接對象
    '2-1:聲明連接對象變量
    Dim con As ADODB.Connection
    '2-2:創(chuàng)建對象并賦值
    Set con = New ADODB.Connection
    '第三步:建立數(shù)據(jù)庫連接
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With

    MsgBox "連接數(shù)據(jù)庫成功"
End Sub

excel vba向access數(shù)據(jù)庫插入數(shù)據(jù)

Option Explicit
Sub 連接數(shù)據(jù)庫()
    '第一步:告訴電腦,我們要用ADO吃靠,就是引用ADO工具硫眨。點擊工具-引用-勾選0biects 2.8Microsoft hetivex Data Obiects 6 1
    '第二步:創(chuàng)建連接對象
    '2-1:聲明連接對象變量
    Dim con As ADODB.Connection, sql As String
    '2-2:創(chuàng)建對象并賦值
    Set con = New ADODB.Connection
    '第三步:建立數(shù)據(jù)庫連接
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    '輸入執(zhí)行的sql語句,這里為插入一條數(shù)據(jù)
    sql = "insert into student values('001','張三',23)"
    con.Execute (sql)
    '釋放連接
    con.Close
    Set con = Nothing
    MsgBox "執(zhí)行成功"
End Sub

excel vba向access數(shù)據(jù)庫刪除數(shù)據(jù)

Option Explicit
Sub 連接數(shù)據(jù)庫()
    '第一步:告訴電腦撩笆,我們要用ADO捺球,就是引用ADO工具。點擊工具-引用-勾選0biects 2.8Microsoft hetivex Data Obiects 6 1
    '第二步:創(chuàng)建連接對象
    '2-1:聲明連接對象變量
    Dim con As ADODB.Connection, sql As String
    '2-2:創(chuàng)建對象并賦值
    Set con = New ADODB.Connection
    '第三步:建立數(shù)據(jù)庫連接
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    '輸入執(zhí)行的sql語句夕冲,這里為刪除一條數(shù)據(jù)
    sql = "delete from student where name='張三'"
    con.Execute (sql)
    '釋放連接
    con.Close
    Set con = Nothing
    MsgBox "執(zhí)行成功"
End Sub

excel vba向access數(shù)據(jù)庫修改數(shù)據(jù)

Option Explicit
Sub 連接數(shù)據(jù)庫()
    '第一步:告訴電腦氮兵,我們要用ADO,就是引用ADO工具歹鱼。點擊工具-引用-勾選0biects 2.8Microsoft hetivex Data Obiects 6 1
    '第二步:創(chuàng)建連接對象
    '2-1:聲明連接對象變量
    Dim con As ADODB.Connection, sql As String
    '2-2:創(chuàng)建對象并賦值
    Set con = New ADODB.Connection
    '第三步:建立數(shù)據(jù)庫連接
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    '輸入執(zhí)行的sql語句泣栈,這里為修改一條數(shù)據(jù)
    sql = "update student set age = 25 where name='張三'"
    con.Execute (sql)
    '釋放連接
    con.Close
    Set con = Nothing
    MsgBox "執(zhí)行成功"
End Sub

excel vba向access數(shù)據(jù)庫查詢數(shù)據(jù)

Option Explicit
Sub 連接數(shù)據(jù)庫()
    '第一步:告訴電腦,我們要用ADO弥姻,就是引用ADO工具南片。點擊工具-引用-勾選0biects 2.8Microsoft hetivex Data Obiects 6 1
    '第二步:創(chuàng)建連接對象
    '2-1:聲明連接對象變量
    Dim con As ADODB.Connection, studentRecordSet As New ADODB.recordSet, sql As String, i As Integer
    '2-2:創(chuàng)建對象并賦值
    Set con = New ADODB.Connection
    '第三步:建立數(shù)據(jù)庫連接
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    '輸入執(zhí)行的sql語句,這里為查詢語句
    sql = "select * from student"
    '生成數(shù)據(jù)庫查詢結(jié)果集
    Set studentRecordSet = con.Execute(sql)
    '循環(huán)記錄集的字段名庭敦,寫入到excel中
    For i = 0 To studentRecordSet.Fields.Count - 1
        'Fields代表獲取的所有字段名疼进,從0開始遞增,Name屬性為字段名
        Cells(1, i + 1).Value = studentRecordSet.Fields(i).Name
    Next
    '將數(shù)據(jù)庫查詢到的數(shù)據(jù)顯示到excel中
    Range("a2").CopyFromRecordset studentRecordSet
    '釋放連接
    studentRecordSet.Close: Set studentRecordSet = Nothing
    con.Close: Set con = Nothing
    MsgBox "執(zhí)行成功"
End Sub

excel vba使用RecordSet的open方法獲得記錄集

Option Explicit
Sub 連接數(shù)據(jù)庫()
    '第一步:告訴電腦秧廉,我們要用ADO伞广,就是引用ADO工具。點擊工具-引用-勾選0biects 2.8Microsoft hetivex Data Obiects 6 1
    '第二步:創(chuàng)建連接對象
    '2-1:聲明連接對象變量
    Dim con As ADODB.Connection, studentRecordSet As New ADODB.recordSet, sql As String, i As Integer
    '2-2:創(chuàng)建對象并賦值
    Set con = New ADODB.Connection
    '第三步:建立數(shù)據(jù)庫連接
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    '輸入執(zhí)行的sql語句疼电,這里為查詢語句
    sql = "select * from student"
    '生成數(shù)據(jù)庫查詢結(jié)果集嚼锄,獲得的對象是只讀的,不能修改記錄蔽豺,不能獲取查到數(shù)據(jù)的條數(shù)区丑。
    'Set studentRecordSet = con.Execute(sql)
    
    '通過RecordSet的open方法獲得記錄集,獲得的記錄集可以修改修陡,并且可以獲取查詢到數(shù)據(jù)的總條數(shù)
    studentRecordSet.Open sql, con, adOpenKeyset, adLockOptimistic
    
    '獲取記錄集的條數(shù)
    MsgBox studentRecordSet.RecordCount
    '數(shù)據(jù)寫入到excel前沧侥,將excel表格清空
    '循環(huán)記錄集的字段名,寫入到excel中
    For i = 0 To studentRecordSet.Fields.Count - 1
        'Fields代表獲取的所有字段名濒析,從0開始遞增正什,Name屬性為字段名
        Cells(1, i + 1).Value = studentRecordSet.Fields(i).Name
    Next
    '將數(shù)據(jù)庫查詢到的數(shù)據(jù)顯示到excel中
    Range("a2").CopyFromRecordset studentRecordSet
    '釋放連接
    studentRecordSet.Close: Set studentRecordSet = Nothing
    con.Close: Set con = Nothing
    MsgBox "執(zhí)行成功"
End Sub

excel vba增刪改查小案例

image.png
Dim con As ADODB.Connection, studentRecordSet As ADODB.Recordset, itemDataArr As Variant
'關(guān)閉按鈕對應(yīng)的點擊事件,點擊后釋放連接并且卸載窗口
Private Sub CommandButton1_Click()
    '按加載順序反向關(guān)閉
    Set studentRecordSet = Nothing
    con.Close: Set con = Nothing
    Unload Me
End Sub


'第一步号杏,打開表單時將所有的部門填充到listbox中
Private Sub UserForm_Initialize()
    Dim sql As String, i As Integer
    '窗體初始化時創(chuàng)建數(shù)據(jù)庫連接對象婴氮,并建立鏈接
    Set con = New ADODB.Connection
    Set studentRecordSet = New ADODB.Recordset
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    sql = "select distinct apartment from student"
    studentRecordSet.Open sql, con, adOpenKeyset, adLockOptimistic
    For i = 1 To studentRecordSet.RecordCount
        ListBox1.AddItem studentRecordSet("apartment")
        studentRecordSet.MoveNext
    Next
    studentRecordSet.Close
End Sub
'第二步斯棒,點擊的部門列表框,查詢該部門對應(yīng)的人員主经,填充到人員列表框中,itemDataArr為條目附加信息數(shù)組
Private Sub ListBox1_Click()
    Dim sql As String, i As Integer
    sql = "select id,name from student where apartment='" & ListBox1.Value & "'"
    '執(zhí)行查詢
    studentRecordSet.Open sql, con, adOpenKeyset, adLockOptimistic
    '重新定義附加數(shù)組大小
    ReDim itemDataArr(studentRecordSet.RecordCount - 1)
    ListBox2.Clear
    For i = 1 To studentRecordSet.RecordCount
        '將查詢到的數(shù)據(jù)塞到人員列表框中荣暮,附加信息添加到附加數(shù)組中
        ListBox2.AddItem studentRecordSet("name")
        itemDataArr(i - 1) = studentRecordSet("id")
        studentRecordSet.MoveNext
    Next
    studentRecordSet.Close
End Sub
'第三步,點擊人員列表框罩驻,查詢對應(yīng)人員信息穗酥,填充到文本框中
Private Sub ListBox2_Click()
    Dim sql As String
    sql = "select * from student where id = '" & itemDataArr(ListBox2.ListIndex) & "'"
     '執(zhí)行查詢
    studentRecordSet.Open sql, con, adOpenKeyset, adLockOptimistic
    TextBox1.Value = studentRecordSet("name")
    TextBox2.Value = studentRecordSet("age")
    TextBox3.Value = studentRecordSet("apartment")
    studentRecordSet.Close
End Sub

excel vba分頁查詢小案例


image.png
Dim con As ADODB.Connection, studentRecordSet As ADODB.Recordset, commonPageNum As Integer, totalPage As Integer
'選擇分頁大小
Private Sub ComboBox1_Change()
    Call RefreshForm(ComboBox1.Value, 1)
End Sub

'釋放連接關(guān)閉窗口
Private Sub CommandButton1_Click()
'按加載順序反向關(guān)閉
    Set studentRecordSet = Nothing
    con.Close: Set con = Nothing
    Unload Me
End Sub
'點擊第一頁
Private Sub CommandButton2_Click()
    Call RefreshForm(ComboBox1.Value, 1)
End Sub
'點擊上一頁
Private Sub CommandButton3_Click()
    If commonPageNum > 1 Then
         Call RefreshForm(ComboBox1.Value, commonPageNum - 1)
    End If
End Sub
'點擊下一頁
Private Sub CommandButton4_Click()
    If commonPageNum < totalPage Then
         Call RefreshForm(ComboBox1.Value, commonPageNum + 1)
    End If
End Sub
'點擊最后一頁
Private Sub CommandButton5_Click()
    Call RefreshForm(ComboBox1.Value, totalPage)
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer
 '窗體初始化時創(chuàng)建數(shù)據(jù)庫連接對象,并建立鏈接
    Set con = New ADODB.Connection
    Set studentRecordSet = New ADODB.Recordset
    With con
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = ThisWorkbook.Path & "/test.mdb"
        .Open
    End With
    '初始化分頁大小選擇范圍
    For i = 1 To 20
        ComboBox1.AddItem i
    Next
    '設(shè)置默認分頁大小為5
    ComboBox1.Value = 5
    Call RefreshForm(5, 1)
End Sub

'刷新表單
Public Sub RefreshForm(pageSize As Integer, pageNum As Integer)
    Dim sql As String, i As Integer, listItem As listItem, j As Integer
    '記錄pageNum
    commonPageNum = pageNum
    '查詢分頁數(shù)據(jù):分頁參考https://blog.csdn.net/lfq761204/article/details/127555263
    sql = "select top " & pageSize & " * from (select top " & pageNum * pageSize & " * from student order by id desc) order by id asc"
    '執(zhí)行查詢
    studentRecordSet.Open sql, con, adOpenKeyset, adLockOptimistic
    '生成表頭
    With ListView1
        .ColumnHeaders.Clear
        .ListItems.Clear
        .View = lvwReport
        .FullRowSelect = True
        .Gridlines = True
        '遍歷查詢到的數(shù)據(jù)表表頭
        For i = 0 To studentRecordSet.Fields.Count - 1
        'Fields計數(shù)從零開始
        .ColumnHeaders.Add , , studentRecordSet.Fields(i).Name, .Width / studentRecordSet.Fields.Count
        Next
    End With
    '填入數(shù)據(jù)到表單
    With ListView1
        .ListItems.Clear
        '遍歷查詢到的數(shù)據(jù)
         For i = 1 To studentRecordSet.RecordCount
            Set listItem = .ListItems.Add
            listItem.Text = studentRecordSet.Fields(0).Value
            '遍歷每條數(shù)據(jù)的每個字段
            For j = 1 To studentRecordSet.Fields.Count - 1
                listItem.SubItems(j) = studentRecordSet.Fields(j).Value
            Next
            studentRecordSet.MoveNext
         Next
    End With
    studentRecordSet.Close
    '查詢總條數(shù)
    sql = "select count(*) as totalRecord from student"
    Set studentRecordSet = con.Execute(sql)
    totalPage = Application.WorksheetFunction.Ceiling(studentRecordSet("totalRecord") / pageSize, 1)
    TextBox1.Value = pageNum & "/" & totalPage
    studentRecordSet.Close
End Sub
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惠遏,一起剝皮案震驚了整個濱河市砾跃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌节吮,老刑警劉巖抽高,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異透绩,居然都是意外死亡翘骂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門帚豪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碳竟,“玉大人,你說我怎么就攤上這事狸臣∮ㄎΓ” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵烛亦,是天一觀的道長统翩。 經(jīng)常有香客問我,道長此洲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任委粉,我火速辦了婚禮呜师,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贾节。我一直安慰自己汁汗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布栗涂。 她就那樣靜靜地躺著知牌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斤程。 梳的紋絲不亂的頭發(fā)上角寸,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天菩混,我揣著相機與錄音,去河邊找鬼扁藕。 笑死沮峡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亿柑。 我是一名探鬼主播邢疙,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼望薄!你這毒婦竟也來了疟游?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤痕支,失蹤者是張志新(化名)和其女友劉穎颁虐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體采转,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡聪廉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了故慈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板熊。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖察绷,靈堂內(nèi)的尸體忽然破棺而出干签,到底是詐尸還是另有隱情,我是刑警寧澤拆撼,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布容劳,位于F島的核電站,受9級特大地震影響闸度,放射性物質(zhì)發(fā)生泄漏竭贩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一莺禁、第九天 我趴在偏房一處隱蔽的房頂上張望留量。 院中可真熱鬧,春花似錦哟冬、人聲如沸楼熄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽可岂。三九已至,卻和暖如春翰灾,著一層夾襖步出監(jiān)牢的瞬間缕粹,已是汗流浹背稚茅。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留致开,地道東北人峰锁。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像双戳,于是被迫代替她去往敵國和親虹蒋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容