《VBA信息獲取與處理》教程是我推出第六套教程,目前已經(jīng)是第一版修訂了。這套教程定位于最高級,是學(xué)完初級,中級后的教程。這部教程給大家講解的內(nèi)容有:跨應(yīng)用程序信息獲得、隨機(jī)信息的利用、電子郵件的發(fā)送、VBA互聯(lián)網(wǎng)數(shù)據(jù)抓取、VBA延時(shí)操作,剪貼板應(yīng)用、Split函數(shù)擴(kuò)展、工作表信息與其他應(yīng)用交互,F(xiàn)SO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數(shù)等等內(nèi)容。程序文件通過32位和64位兩種OFFICE系統(tǒng)測試。是非常抽象的,更具研究的價(jià)值。教程共兩冊,八十四講。今日的內(nèi)容是專題十:“利用QueryTables抓取網(wǎng)絡(luò)數(shù)據(jù)”:VBA中QueryTables提取股票歷史交易信息第三節(jié) 利用QueryTables提取某支股票歷史交易信息數(shù)據(jù)大家好,這講講解的是利用QueryTables實(shí)現(xiàn)抓取網(wǎng)頁數(shù)據(jù)的具體應(yīng)用,在上一講的講解中,我們看到QueryTables方法利用起來代碼確實(shí)是非常簡單,實(shí)現(xiàn)的效果也是非常好的。這講我們繼續(xù)講解這種方法的利用。這一講我們將完成提取某支股票歷史交易信息的數(shù)據(jù)。實(shí)用場景:利用QueryTables,抓取網(wǎng)易財(cái)經(jīng)某支股票的歷史交易數(shù)據(jù),這里我選擇的股票是紫金礦業(yè),抓取2020年第2季度的數(shù)據(jù),網(wǎng)易財(cái)經(jīng)網(wǎng)址是:http://quotes.money.163.com/trade/lsjysj,股票在當(dāng)今社會即是個(gè)人投資的方式,又是經(jīng)濟(jì)社會發(fā)展的晴雨表,關(guān)注的人都非常多,也希望在市場運(yùn)作中能分析出一套可以用于自己投資理財(cái)?shù)臄?shù)據(jù),但股票有風(fēng)險(xiǎn),大家還是要小心謹(jǐn)慎,不要被表面的高利所誘惑,我這里只能提供給大家基礎(chǔ)數(shù)據(jù)積累,不涉及股票操作。1 利用QueryTables提取某支股票歷史交易信息數(shù)據(jù)的思路分析為了實(shí)現(xiàn)上述的場景,我們先看一看上述提供網(wǎng)址提供網(wǎng)頁的信息:上述的網(wǎng)頁中,我要提取的是紅色框框起來表的數(shù)據(jù),我們進(jìn)行一下思路的分析:首先清空一下回填數(shù)據(jù)的區(qū)域,然后用QueryTables.Add方法,在網(wǎng)頁上提取序號為4的表的數(shù)據(jù)即可。提取表數(shù)據(jù)的時(shí)候可以選擇一下格式的填充。在利用Add方法進(jìn)行連接的時(shí)候要將年和季節(jié)的參數(shù)給出,同時(shí)回填數(shù)據(jù)的區(qū)域選擇A5單元格。為了驗(yàn)證一下網(wǎng)址,我們可以在工作表中的某個(gè)單元格中留存一下網(wǎng)址。以備核對。2 利用QueryTables提取某支股票歷史交易信息數(shù)據(jù)的代碼實(shí)現(xiàn)為了實(shí)現(xiàn)上述的思路,我給出了下面的代碼:Sub myNZA() '獲取網(wǎng)易財(cái)經(jīng)股票的價(jià)格和信息ActiveSheet.UsedRange.Offset(4).ClearContents GPCode = Cells(1, 4).Value strQuery = 'URL;http://quotes.money.163.com/trade/lsjysj_' & GPCode strQuery = strQuery & '.html?year=' & myN strQuery = strQuery & '&season=' & myJ With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range('A5')) .RefreshOnFileOpen = False .PreserveFormatting = True .AdjustColumnWidth = False .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .Refresh BackgroundQuery:=False1) Sheets('Sheet2').SelectActiveSheet.UsedRange.Offset(4).ClearContents以上代碼清空數(shù)據(jù)的回填區(qū)域,注意第二句的寫法。2)GPCode = Cells(1, 4).Value 取得股票的代碼3) myN = Cells(2, 4).Value 取得要查詢的年4) myJ = Cells(3, 4).Value 取得要查詢的季節(jié)5)strQuery = 'URL;http://quotes.money.163.com/trade/lsjysj_' & GPCode strQuery = strQuery & '.html?year=' & myN strQuery = strQuery & '&season=' & myJ6) Cells(1, 'l') = strQuery7)With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range('A5'))上述代碼指定加載網(wǎng)址http://quotes.money.163.com/trade/lsjysj_601899.html?year=2020&season=2, 的數(shù)據(jù) ,Range('a5')是回填給工作表區(qū)域的左上角的單元格。9).RefreshOnFileOpen = False 如果每次打開工作簿時(shí),數(shù)據(jù)表高速緩存或查詢表自動更新,則為 True。 默認(rèn)值為 False 。 讀取/寫入 Boolean。10).BackgroundQuery = True 是否在后臺異步執(zhí)行,如果查詢表的查詢是異步執(zhí)行(在后臺執(zhí)行)的,則為 True。 如果將Data數(shù)據(jù)隨工作簿一起保存,則為 True。 如果僅保存數(shù)據(jù)透視表的定義,則為 False。 讀取/寫入 Boolean。12) .PreserveFormatting = True 如果將數(shù)據(jù)前五行的任何常用格式設(shè)置應(yīng)用到查詢表的新數(shù)據(jù)行,則為 True。 未使用的單元格未格式化。 如果將應(yīng)用到查詢表的最新一次自動套用格式應(yīng)用于新數(shù)據(jù)行,則屬性為 False。 默認(rèn)值為 True。對于數(shù)據(jù)庫查詢表, 默認(rèn)格式設(shè)置為xlSimple 常量。刷新查詢表時(shí),將對查詢表應(yīng)用新的自動套用格式樣式。 只要 PreserveFormatting 的值為 False,則 AutoFormat(自動套用格式)就會被設(shè)置為 None。 因此, 在PreserveFormatting之前設(shè)置的任何自動套用格式設(shè)置為False , 并且在刷新查詢表之前不會生效, 并且生成的查詢表不會應(yīng)用任何格式。13) .AdjustColumnWidth = False 如果每次刷新指定的查詢表時(shí)列寬都會自動調(diào)整為最適合的寬度,則為 True。 如果每次刷新時(shí)列寬不進(jìn)行自動調(diào)整,則為 False。 默認(rèn)值為 True 。 返回或設(shè)置兩次刷新之間的時(shí)間間隔。 讀/寫 Long。將周期設(shè)置為 0(零),則會禁用自動定時(shí)刷新,并且等同于將該屬性設(shè)置為 Null。RefreshPeriod 屬性的值可以是從 0 到 32767 的整數(shù)。15) .WebSelectionType = xlSpecifiedTables 指定表16) .WebFormatting = xlWebFormattingNone 提取表的數(shù)據(jù)無格式17) .WebTables = '4' 選擇序號為4的表18) .Refresh BackgroundQuery:=False 更新一個(gè)查詢表數(shù)據(jù)。Updates an external data range in a QueryTable object.上面的各個(gè)屬性給大家進(jìn)行了詳細(xì)的講解,希望大家能了解。3 利用QueryTables提取某支股票歷史交易信息數(shù)據(jù)的實(shí)現(xiàn)效果當(dāng)我們點(diǎn)擊運(yùn)行按鈕,如圖的箭頭所示,程序就會開始運(yùn)行,抓取網(wǎng)頁數(shù)據(jù)到工作表中。當(dāng)然在實(shí)際的應(yīng)用中,用戶可以根據(jù)自己的實(shí)際需要完成抓取工作到指定的位置。從而驗(yàn)證了我們思路的正確。從代碼到實(shí)現(xiàn)的過程,非常的簡潔,代碼理解也非常的容易,這給我們的學(xué)習(xí)和利用帶來了方便。本節(jié)知識點(diǎn)回向:如何利用QueryTables對象各種屬性的理解和掌握。我20多年的VBA實(shí)踐經(jīng)驗(yàn),全部濃縮在下面的各個(gè)教程中,教程學(xué)習(xí)順序:【分享成果,隨喜正能量】識人不必探盡,探盡則多疑;知人不必言盡,言盡則無友;責(zé)人不必苛盡,苛盡則眾遠(yuǎn);敬人不必卑盡,卑盡則無骨;讓人不必退盡,退盡則路窄。是人當(dāng)尋寧靜內(nèi)而不在他處,當(dāng)一個(gè)人的內(nèi)在是寂靜的,自我就會消失。。
|