小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VBA中QueryTables提取股票歷史交易信息

 F2967527 2022-07-02 發(fā)布于北京
《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à)格和信息
    Dim strQuery As String
Sheets('Sheet2').Select
ActiveSheet.UsedRange.Offset(4).ClearContents
    GPCode = Cells(1, 4).Value
    myN = Cells(2, 4).Value
    myJ = Cells(3, 4).Value
    strQuery = 'URL;http://quotes.money.163.com/trade/lsjysj_' & GPCode
    strQuery = strQuery & '.html?year=' & myN
    strQuery = strQuery & '&season=' & myJ
    Cells(1, 'l') = strQuery   
    With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range('A5'))
        .Name = 'history'
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .SaveData = True
        .PreserveFormatting = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = '4'
        .Refresh BackgroundQuery:=False
    End With
    MsgBox ('OK')
End Sub


代碼的講解:

1)  Sheets('Sheet2').Select
ActiveSheet.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=' & myJ
以上取得要連接的URL
6) Cells(1, 'l') = strQuery
在工作表的單元格中備份網(wǎng)址以便核對。
7)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ū)域的左上角的單元格。
8).Name = 'history'

9).RefreshOnFileOpen = False
如果每次打開工作簿時(shí),數(shù)據(jù)表高速緩存或查詢表自動更新,則為 True。 默認(rèn)值為 False 。 讀取/寫入 Boolean。
     
10).BackgroundQuery = True 
是否在后臺異步執(zhí)行,如果查詢表的查詢是異步執(zhí)行(在后臺執(zhí)行)的,則為 True。 
11)  .SaveData = 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 。
14)   .RefreshPeriod = 0
  返回或設(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)在是寂靜的,自我就會消失。。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多