Bog'langan jadvallar juda foydali bo'lishi mumkin (albatta, har doim ham bo'lmasa ham) - ayniqsa siz muntazam ravishda o'zgarib turadigan tashqi ma'lumotlar bilan ishlayotganingizda. Oddiy misol, yetkazib beruvchi sizga joriy oylik narxlar fayliga ruxsat berganida bo'lishi mumkin. Ammo keyingi oy faylni chiqarganda nima bo'ladi va fayl nomi "Pricelist-01-01-2016" dan "Pricelist-01-02-2016" ga o'zgaradi? Birinchi narsa - havolangiz buziladi, shuning uchun uni qo'lda yangilashingiz kerak bo'ladi. Har safar ular fayl nomini o'zgartiradilar. Bu jadval nomlariga ham tegishli (albatta!). Buni tez va oson qilishning bir yo'li bormi, siz so'rayapsizmi? Siz soʻraganingizdan xursandmiz – oʻqing va qanday qilib…
Sahnani o'rnatish - stsenariy
Ushbu maqolada men o'ylab topilgan stsenariydan foydalanmoqchiman - lekin siz tezda tanib olishingizga aminman!
Har oyda Acme trading bizga ishlatiladigan barcha sarf materiallari uchun yangilangan narxlar ro'yxatini yuboradi DataNumen. Har oy statsionarga qancha pul sarflashimizni bilishimiz uchun ofis boshqaruvi maʼlumotlar bazasida ushbu faylga havola qilamiz.
Muammo shundaki, fayl formati o'zgarishsiz qolsa ham, fayl nomi har oy o'zgarib turadi. O'tgan oy u “statsionar xarajatlar yanvar 2017.xls” edi, bu oy u “statsionar xarajatlar fevral 2017.xls”.
Ishonchim komilki, siz rozi bo'lasiz, lekin agar biz fayl nomini qo'lda o'zgartirish muammosiga duch kelmasak (eski faylni yo'ldan olib tashlaganimiz yoki uni o'chirib tashlaganimizdan keyin) yoki Access-dagi bog'langan jadval menejeri orqali jadvalni qayta bog'lash.
Biz buni qilishni istamaganimiz sababli, biz buni amalga oshirish uchun quyidagi kodni yaratdik - bu juda oson, chunki siz ko'rasiz:
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'format of the connection string in our case, for example, is: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
Kodni tushuntirish
Ko'rib turganingizdek, biz (bog'langan) jadval nomini jadval bog'lanishi kerak bo'lgan yangi fayl nomi bilan birga uzatamiz. Fayl nomi faylga to'liq yo'lni o'z ichiga olishi kerak. Boshida siz qiynalishingiz mumkin bo'lgan sohalardan biri bu "newConnect" o'zgaruvchisiga joylashtirish uchun ulanish satri uchun to'g'ri formatni olishdir. To'g'ri formatni topish uchun ko'plab manbalar mavjud bo'lsa-da, men topgan eng oson yo'llardan biri shunchaki joriy bog'langan jadvalning ulanish satriga qarashdir. Buning uchun "Set objTableDef = objDB.TableDefs(tableName)" qatori ostiga quyidagi qatorni qo'shing:
Debug.Print (objTableDef.Connect)
Bu mavjud ulanish qatorini kod muharririning disk raskadrovka/darhol oynasiga chop etadi (agar u hali ko'rinmasa, kodni ishga tushirishdan oldin Darhol oynaning ko'rinishini almashtirish uchun VBA kod muharriri ekranidagi CTRL-G tugmalarini bosing.
Ogohlantirish
Har doimgidek, shuni unutmangki, yuqoridagi kod parchasi jadval bog'langan faylni o'zgartirishingiz kerak bo'lganda vaqtni tejashga yordam berishi mumkin, ammo agar biror narsaga duch kelsangiz, bu sizga yordam bera olmaydi. Fayl zarariga kirish, shuning uchun zaxira nusxalarini saqlab qo'yganingizga ishonch hosil qiling va agar barchasi muvaffaqiyatsiz bo'lsa, qaerga murojaat qilishni biling.
Muallif kirish:
Mitchell Pond - ma'lumotlarni qayta tiklash bo'yicha mutaxassis DataNumenMa'lumotlarni qayta tiklash texnologiyalari bo'yicha jahon yetakchisi bo'lgan , Inc SQL zararini tuzatish va excel tiklash dasturiy mahsulotlar. Qo'shimcha ma'lumot olish uchun tashrif buyuring www.datanumen.com