Kaip prijungti „Excel“ prie prieigos duomenų bazės naudojant VBA

„Access“ duomenų bazė yra santykių duomenų bazių valdymo sistema, kuri efektyviai sutaupo daug duomenų organizuotai. Kai „Excel“ yra galingas įrankis suskaidyti duomenis į prasmingą informaciją. Tačiau „Excel“ negali saugoti per daug duomenų. Tačiau kai kartu naudojame „Excel“ ir „Access“, šių įrankių galia didėja eksponentiškai. Taigi, išmokime prijungti „Access“ duomenų bazę kaip duomenų šaltinį prie „Excel“ per VBA.

Prieigos duomenų bazės prijungimas kaip duomenų šaltinis „Excel“

1: pridėkite nuorodą į „AcitveX“ duomenų objektą

Norėdami prisijungti prie duomenų bazės, naudosime ADO. Taigi pirmiausia turime pridėti nuorodą į ADO objektą.

Pridėkite modulį prie savo VBA projekto ir spustelėkite įrankius. Čia spustelėkite nuorodas.

Dabar ieškokite „Microsoft ActiveX“ duomenų objektų bibliotekos. Patikrinkite naujausią turimą versiją. Turiu 6.1. Spustelėkite mygtuką Gerai ir viskas baigta. Dabar esame pasiruošę sukurti nuorodą į prieigos duomenų bazę.

2. Parašykite VBA kodą, kad užmegztumėte ryšį su prieigos duomenų baze

Norėdami prijungti „Excel“ prie „Access“ duomenų bazės, turite turėti „Access“ duomenų bazę. Mano duomenų bazės pavadinimas yra "Bandymo duomenų bazė.accdb ". Jis išsaugomas "C: \ Users \ Manish Singh \ Desktop" vietą. Šie du kintamieji yra svarbūs. Turėsite juos pakeisti pagal savo poreikius. Poilsio kodas gali būti paliktas toks, koks yra.

Nukopijuokite žemiau esantį kodą, kad sukurtumėte „Excel“ VBA modulį ir atliktumėte pakeitimus pagal savo reikalavimus. Aš paaiškinau kiekvieną kodo eilutę žemiau:

ADO_Connection () „Ryšio ir įrašų rinkinio objektų kūrimas Dim conn As New Connection, rec As New Recordset Dim DBPATH, PRVD, connString, query As String „Deklaruoti visiškai kvalifikuotą duomenų bazės pavadinimą. Pakeiskite jį naudodami savo duomenų bazės vietą ir pavadinimą. DBPATH = "C: \ Users \ ExcelTip \ Desktop \ Test Database.accdb" „Tai yra ryšio tiekėjas. Prisiminkite tai savo interviu metu. PRVD = "Microsoft.ace.OLEDB.12.0;" „Tai yra ryšio eilutė, kurios jums prireiks atidarant ryšį. connString = "Provider =" & PRVD & "Duomenų šaltinis =" & DBPATH 'atidarant ryšį conn. Atidaryti connString “užklausą, kurią noriu paleisti duomenų bazėje. query = "SELECT * from customerT;" “vykdo užklausą dėl atviro ryšio. Jis gaus visus duomenis rec objektas. rec. Atvira užklausa, jung "išvalyti ląstelių turinį Ląstelės. Aiškus turinys „gauti duomenis iš įrašų rinkinio, jei toks yra, ir spausdinti juos„ Excel “lapo A stulpelyje. Jei (rec.RecordCount 0), tada atlikite, kol nėra rec.EOF diapazonas ("A" ir langeliai (Rows.Count, 1). Pabaiga (xlUp) .Row) .Perkėlimas (1, 0) .Vertė 2 = _ rec.Fields (1). Vertė rec.MoveNext Loop End If “jungčių uždarymas rec. Uždaryti jungtį. Uždaryti pabaigos sub 

Nukopijuokite aukščiau esantį kodą arba atsisiųskite žemiau esantį failą ir pakeiskite failą, kad atitiktų jūsų poreikius.

Parsisiųsti failą: VBA Database Learning

Kai paleisite šį VBA kodą, „Excel“ užmezgs ryšį su duomenų baze. Vėliau jis vykdys sukurtą užklausą. Jis išvalys visą seną lapo turinį ir užpildys A stulpelį duomenų bazės 1 lauko (antro lauko) reikšmėmis.

Kaip veikia šis VBA prieigos duomenų bazės ryšys?

Dim conn As New Connection, rec As New Recordet

Aukščiau esančioje eilutėje mes ne tik deklaruojame ryšio ir įrašų rinkinio kintamuosius, bet ir inicijuojame jį tiesiogiai naudodami naują raktinį žodį.

DBPATH = "C: \ Users \ ExcelTip \ Desktop \ Test Database.accdb" PRVD = "Microsoft.ace.OLEDB.12.0;"

Šios dvi eilutės yra varžovai. DBPATH keisis tik su jūsų duomenų baze. PRVD jungia OLE DB teikėją.

conn. Atidaryti connString

Ši eilutė atveria ryšį su duomenų baze. Atviras yra ryšio objekto funkcija, kuri apima kelis argumentus. Pirmasis ir būtinas argumentas yra „ConnectingString“. Šioje eilutėje yra OLE DB teikėjas (čia PRVD) ir duomenų šaltinis (čia DBPATH). Administratorius ir slaptažodis taip pat gali būti pasirenkami kaip saugomų duomenų bazių argumentai.

Ryšio sintaksė. Atviras yra:

connection.open ([ConnectionString kaip eilutė], [UserID kaip eilutė], [Password as String], [Options as Long = -1])

Kadangi savo duomenų bazėje neturiu jokio ID ir slaptažodžio, naudoju tik „ConnectionString“. „ConnectionString“ formatas yra „Provider =teikėjas_norite naudoti; Duomenų šaltinis =visiškai kvalifikuotas duomenų bazės pavadinimas". Mes sukūrėme ir išsaugojome šią eilutęconnString kintamasis.

query = "SELECT * from customerT;"

Tai yra užklausa, kurią noriu paleisti duomenų bazėje. Galite turėti bet kokių norimų klausimų.

rec. Atvira užklausa, jung

Šis teiginys vykdo apibrėžtą užklausą apibrėžtame ryšyje. Čia mes naudojame atvirą įrašų rinkinio objekto metodą. Visa išvestis išsaugoma įrašų rinkinio objekterec. Galite gauti manipuliuoti arba ištrinti reikšmes iš įrašų rinkinio objekto.

Ląstelės. Aiškus turinys

Ši eilutė išvalo lapo turinį. Kitaip tariant, ištrina viską iš lapo langelių.

Jei (rec.RecordCount 0), tada atlikite, kol nėra rec.EOF diapazonas ("A" ir langeliai (Rows.Count, 1). Pabaiga (xlUp) .Row) .Perkėlimas (1, 0) .Vertė 2 = _ rec.Fields (1). Vertė rec.MoveNext Loop End If

Aukščiau pateiktas eilučių rinkinys patikrina, ar įrašų rinkinys tuščias, ar ne. Jei įrašų rinkinys nėra tuščias (tai reiškia, kad užklausa grąžino kai kuriuos įrašus), ciklas prasideda ir pradeda spausdinti kiekvieną 1 lauko reikšmę (antrasis laukas, šiuo atveju vardas) paskutiniame nepanaudotame stulpelio langelyje.

(Tai naudojama tik paaiškinti. Gali būti, kad neturite šių eilučių. Jei norite tik užmegzti ryšį su duomenų baze, pakanka VBA kodo virš šių eilučių.)

Mes naudojome rec.EOF, kad paleistume kilpą iki įrašų rinkinio pabaigos. Rec.MoveNext naudojamas norint pereiti prie kito įrašų rinkinio. rec.Fields (1) naudojamas reikšmėms gauti iš 1 lauko (kuris yra antras, nes jo laukų indeksavimas prasideda nuo 0. Mano duomenų bazėje antras laukas yra kliento vardas).

rec. Uždaryti jungtį. Uždaryti

Galiausiai, kai visi darbai, kurių norėjome iš rec ir conn, yra atlikti, mes juos uždarome.

Jei norite atskirai atidaryti ir uždaryti konkrečius ryšius, šias eilutes galite turėti atskiroje paprogramėje.

Taigi taip, vaikinai, taip sukuriate ryšį su ACCESS duomenų baze naudodami ADO. Yra ir kitų metodų, tačiau tai yra lengviausias būdas prisijungti prie duomenų šaltinio prieigos per VBA. Aš kuo išsamiau tai paaiškinau. Leiskite man žinoti, ar tai buvo naudinga komentarų skiltyje žemiau.
Susiję straipsniai:

Naudokite uždarą darbaknygę kaip duomenų bazę (DAO) naudodami „Microsoft Excel“ VBA | Norėdami naudoti uždarą darbaknygę kaip duomenų bazę su DAO ryšiu, naudokite šį VBA fragmentą „Excel“.

Naudokite uždarą darbaknygę kaip duomenų bazę (ADO) naudodami „Microsoft Excel“ VBA | Norėdami naudoti uždarą darbaknygę kaip duomenų bazę su ADO ryšiu, naudokite šį VBA fragmentą „Excel“.

Darbo su „Excel VBA UserForms“ pradžia | Norėdami įterpti duomenis į duomenų bazę, naudojame formas. „Excel UserForms“ yra naudinga informacijai iš vartotojo gauti. Štai kaip turėtumėte pradėti nuo VBA vartotojo formų.

Pakeiskite kelių „UserForm“ valdiklių vertę/turinį naudodami „Excel“ VBA | Norėdami pakeisti vartotojo formos valdiklių turinį, naudokite šį paprastą VBA fragmentą.

Naudodami „VBA“ programoje „Excel“ neleiskite vartotojo formai užsidaryti, kai naudotojas spustelės x mygtuką | Norėdami neleisti vartotojo formai užsidaryti, kai naudotojas spustelės formos x mygtuką, naudojame įvykį UserForm_QueryClose.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų leis dar greičiau dirbti naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint suskaičiuoti konkrečią vertę, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave