返回列表 上一主題 發帖

[發問] (EXCEL VBA問題)請問怎樣用QueryTable抓取網頁資料?

[發問] (EXCEL VBA問題)請問怎樣用QueryTable抓取網頁資料?

(EXCEL VBA問題)請問怎樣用QueryTable抓取網頁資料?
網址:www.twse.com.tw/exchangeReport/MI_INDEX?response=html&date=20171229&type=ALLBUT0999
我需要的是中間部份
106年12月29日每日收盤行情(全部(不含權證、牛熊證))

使用錄製巨集方式

sub test()

With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.twse.com.tw/exchangeReport/MI_INDEX?response=html& date =20171229&type=ALLBUT0999" _
        , Destination:=Range("A1"))
        .Name = "MI_INDEX?response=html&date=20171229&type=ALLBUT0999"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "5"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

將其中的日期20171229改為
" & Range("a1") & Range("b1") & Range("c1") & "
卻發現不可行
a1,b1,c1分別輸入2017,12,27
出現的還是20171229的

不知道問題出在那裡?

回復 2# GBKEE


GBKEE大,連這種差一個空白鍵的錯誤都找得出來,您真的是太厲害了。
另外,想再問一下,如果想把日期輸入改用INUTBOX方式,程式碼要怎樣修改?

TOP

[版主管理留言]
  • GBKEE(2018/1/4 19:03): 附檔看看

回復 4# GBKEE

GBKEE大,試過了,好像不行,執行巨集,沒有反應。

TOP

[版主管理留言]
  • GBKEE(2018/1/6 06:02): 請用附件上傳,可用擴展名: chm, pdf, zip, rar, tar, gz, bzip2, gif, jpg, jpeg, png

回復 4# GBKEE


GBKEE大,檔案網址如下請下載,
Download Page Link
https://www.sendspace.com/file/onxcag

TOP

回復 4# GBKEE


    GBKEE大,檔案已上傳, INPUTBOX+QUERYTABLE.rar (7.65 KB)

TOP

回復 8# rogersg


rogersg大,可以了,萬分感謝。

您跟GBKEE大的程式碼只多了
.WebFormatting = xlNone
                    .RefreshStyle = xlInsertDeleteCells
                    .AdjustColumnWidth = True
                    .Refresh BackgroundQuery:=True
想不到竟然可行,真是令人訝異。

TOP

回復 9# paul3063


題外話,
其實中間有試著將巨集改成
Sub test()
X = InputBox()
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.twse.com.tw/exchangeReport/MI_INDEX?response=html&date=" & X & "&type=ALLBUT0999" _
        , Destination:=Range("A1"))


結果出現,
編譯錯誤:引數不為選擇性
所以才又問了GBKEE大後面的問題

總之,謝謝GBKEE大跟rogersg大

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題