Page 1 of 1

การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 11:32 am
by bboy_access
คือผมอยากจะดึงข้อมูลราคาย้อนหลังจากเว็ป( http://www.set.or.th/set/historicaltrad ... country=TH)

โดยอยากจะดึงราคาย้อนหลัง ประมาณ 60 วัน ( ตัวอย่างค่าที่ผมอยากจะดึงครับอยู่ด้านล่างครับ) แต่ถ้าผมจะดึงข้อมูลย้อนหลัง 60 วัน ผมต้องคลิ๊ก Next เพื่อไปดึงข้อมูลอีกหนึ่งหน้าด้วยครับ

รบกวนอาจารย์หรือผู้มีความชำนาญช่วยแนะนำหน่อยครับว่าต้องทำอย่างไร ถึงจะสามารถดึงมาครั้งเดียวได้ข้อมูลครบ 60 วันเลยครับ

ขอบคุณครับ



ตัวอย่างข้อมูลที่ต้องการจะดึงครับ
09/01/2558 251.00 251.00 248.00 248.00 -2.00 -0.80 4,615,779 1,150,721.29

08/01/2558 251.00 252.00 248.00 250.00 -3.00 -1.19 6,738,377 1,684,609.52

07/01/2558 246.00 253.00 240.00 253.00 +6.00 +2.43 11,560,842 2,834,206.60

06/01/2558 246.00 250.00 245.00 247.00 -2.00 -0.80 4,386,595 1,084,522.07

05/01/2558 252.00 254.00 247.00 249.00 -2.00 -0.80 5,270,169 1,317,362.92

30/12/2557 249.00 252.00 247.00 251.00 +2.00 +0.80 2,302,963 575,501.19

29/12/2557 252.00 253.00 248.00 249.00 -2.00 -0.80 2,282,669 570,719.28

26/12/2557 248.00 251.00 246.00 251.00 +3.00 +1.21 2,453,054 611,976.10

25/12/2557 251.00 252.00 246.00 248.00 -5.00 -1.98 1,774,190 441,590.71

24/12/2557 250.00 253.00 249.00 253.00 +3.00 +1.20 3,077,116 773,720.53

23/12/2557 250.00 254.00 249.00 250.00 0.00 0.00 8,763,090 2,197,439.68

22/12/2557 246.00 250.00 245.00 250.00 +5.00 +2.04 6,367,805 1,584,195.89

19/12/2557 248.00 251.00 243.00 245.00 0.00 0.00 9,082,033 2,250,633.24

18/12/2557 245.00 246.00 242.00 245.00 +3.00 +1.24 4,648,377 1,132,966.86

17/12/2557 240.00 245.00 240.00 242.00 +2.00 +0.83 11,099,870 2,689,941.63

16/12/2557 230.00 242.00 227.00 240.00 +3.00 +1.27 10,810,782 2,540,081.76

15/12/2557 234.00 237.00 219.00 237.00 -2.00 -0.84 14,159,391 3,256,004.80

12/12/2557 243.00 244.00 239.00 239.00 -5.00 -2.05 4,822,826 1,158,739.35

11/12/2557 247.00 248.00 236.00 244.00 -1.00 -0.41 10,449,782 2,526,930.63

09/12/2557 250.00 251.00 245.00 245.00 -5.00 -2.00 6,883,153 1,710,691.58

08/12/2557 250.00 252.00 248.00 250.00 +2.00 +0.81 10,553,970 2,643,129.37

04/12/2557 245.00 250.00 245.00 248.00 +4.00 +1.64 10,304,030 2,554,022.19

03/12/2557 240.00 245.00 240.00 244.00 +4.00 +1.67 7,687,730 1,870,476.12

02/12/2557 240.00 240.00 238.00 240.00 0.00 0.00 4,189,606 1,002,818.46

01/12/2557 237.00 240.00 237.00 240.00 +2.00 +0.84 2,886,699 689,516.55

Re: รบกวนช่วยแนะนำการดึงข้อมูลจากเว็ปให้หน่อยครับ

Posted: Sat Jan 10, 2015 11:44 am
by snasui
:D ใช้ Excel Version ใดครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 11:58 am
by bboy_access
2010 ครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 6:43 pm
by snasui
:D เข้าเมนู Data > From web > ตรง Address วาง URL http://www.set.or.th/set/historicaltrad ... pe=trading > คลิก Go > คลิก Import > เลือกเซลล์แรกที่จะวางข้อมูล > OK

ทำซ้ำกันด้านบน เปลี่ยน URL เป็น http://www.set.or.th/set/historicaltrad ... pe=trading และเปลี่ยนตำแหน่งเซลล์แรกที่จะวางข้อมูล อาจจะวางกันคนละชีท

หากต้องการจะ Refresh เพื่อให้เป็นข้อมูลปัจจุบันให้เข้าเมนู Data > Refresh

ข้อสังเกต URL ด้านบน ต่างกันตรงที่ page=0 และ page=1 เท่านั้น

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 8:05 pm
by bboy_access
ผมลองทำแล้วครับ แต่ไม่สามารถดึงตารางมาได้ครับ

ใน Column B1 ขึ้นแค่ (historicaltrading.do?symbol=ADVANC&page=1&language=th&country=TH&type=trading) ไม่มีตารางมาเลยครับ

ช่วยแนะนำหน่อยว่าผมทำผิดตรงไหนครับ

ขอบคุณครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 8:24 pm
by snasui
:D ผมทดสอบแล้วสามารถดึงข้อมูลได้เป็นปกติครับ

Image

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 10:50 pm
by bboy_access
ผมลองทดสอบอีกครั้งก็เป็นเหมือนเดิมเลยครับ

รบกวนช่วยแนะนำหน่อยครับว่าเกิดมาจากอะไรครับ

ปล.ผมก็เลือกตารางแล้วนะครับ (ช่วยดูในไฟล์แนบให้หน่อยครับ)

ขอบคุณครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sat Jan 10, 2015 11:28 pm
by snasui
:D ไม่จำเป็นต้องเลือกตาราง ให้ดึงมาทั้งหมดของหน้านั้น ค่อยมาเลือกข้อมูลที่ต้องการทีหลังครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 12:05 am
by bboy_access
ผมต้องการดึงข้อมูล 60วันครับ

รบกวนช่วยทำเป็นตัวอย่างในไฟล์ที่ผมแนบไปให้หน่อยนะครับ

ปล.ไม่ค่อยมีความชำนาญในด้านนี้ครับ

ขอบคุณครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 12:14 am
by snasui
:D ทำตามโพสต์ที่ผมจับภาพไปให้ครับ ไม่มีเทคนิคอื่นใดเหนือจากนั้นครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 6:02 pm
by bboy_access
ก่อนอื่นขอขอบคุณอาจารย์ Snasui ครับ ตอนนี้ผมได้ทำผ่านไป 1 ขั้นตอนแล้วครับ

ขั้นตอนต่อไปผมอยากจะเปลี่ยนหุ้นครับ เช่นเปลี่ยนจาก PTTGC เป็น PTT (http://www.set.or.th/set/historicaltrad ... pe=trading)

ลิงค์ของหุ้นในวงเล็บคือ PTTGC แต่ผมอยากจะเปลี่ยนเป็น PTT ผมอยากจะสร้าง Macro ขึ้นมาเพื่อเปลี่ยนจาก PTTGC ให้เป็น PTT แล้วดึงข้อมูลของ PTT มาแทน

แต่ก็ไม่สำเร็จซะทีครับ อาจารย์ช่วยสอนวิธีที่สามารถเปลี่ยนได้ให้ผมหน่อยนะครับ

ขอบคุณครับ

ปล.ผมแนบไปที่ผมทำสำเร็จขั้นแรกนะครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 9:09 pm
by snasui
:D การเปลียน Link ให้ลองเปลี่ยนที่หน้าเว็บโดยเลือกที่ช่อง "เลือกหลักทรัพย์" แล้วสังเกต URL ว่าเปลี่ยนไปเช่นไร ให้นำ URL นั้นมาเป็นเงื่อนไขในการดึงข้อมูลครับ

ตัวอย่างของ PPT-F http://www.set.or.th/set/historicaltrading.do?symbol=[background=yellow]PTT-F[/background]&page=0&language=th&country=TH&type=trading

ตัวอย่างของ PPT http://www.set.or.th/set/historicaltrading.do?symbol=[background=yellow]PTT[/background]&page=0&language=th&country=TH&type=trading

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 10:10 pm
by bboy_access
ใช่ครับแต่ถ้าผมจะเอามาประยุกค์เขียนmacro ให้ง่ายต่อการใช้งานโดยที่ไม่ต้องพิมพ์เปลี่ยน url เองอยากจะใช้macro เปลี่ยนครับ

ช่วยเขียนตัวอย่าง code ให้ดูหน่อยครับ

ขอบคุณครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 10:13 pm
by snasui
:D ไม่สามารถเขียนให้ก่อนได้ ผิดกฎข้อ 5 ด้านบน VBA ต้องเขียนมาเอง การบันทึก Macro เป็นวิธีที่ดีที่สุดวิธีหนึ่งสำหรับการศึกษา VBA ควรลองบันทึก Macro แล้วแก้ไข Code ครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 10:15 pm
by bboy_access
พอจะมีcode คำสั่งที่ใช้กับmacro ในการเปลี่ยนurl หรือเปล่าครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Sun Jan 11, 2015 10:19 pm
by snasui
:D คงต้องลอง Search ดูครับ

ตัวอย่าง https://www.google.co.th/webhp?sourceid ... l+with+vba

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Mon Jan 12, 2015 8:55 am
by bboy_access
ขอบคุณครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Mon Jan 12, 2015 10:56 pm
by bboy_access
ทำได้แล้วครับแต่ติดปัญหาอีกนิดหน่อยครับ

ตอนนี้ผมสามารถดึงข้อมูลที่ต้องการได้แล้วโดยการพิมพ์ชื่อหุ้นที่ช่อง A1 แล้วกด ดึงข้อมูลครับ

แต่ปัญหาที่ผมเจอคือ เมื่อผมเปลี่ยนชื่อหุ้น แล้วทำการกดปุ่ม "ดึงข้อมูล" พบว่าข้อมูลที่ดึงมาใหม่นั้นไม่แทนที่ตำแหน่งเดิม (ข้อมูลจะสะสมไปเรื่อยๆทุกครั้งที่กดดึงข้อมูล)

จะทำอย่างไรถึงจะให้ข้อมูลที่ดึงมาทับตำแหน่งเดิมครับ

ขอบคุณครับ

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Tue Jan 13, 2015 6:52 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
src.Range("a2").Resize(1000, 1000).Clear  'Add this line
With tgt.QueryTables.Add(Connection:= _
    url, _
    Destination:=tgt.Range("A5"))

    .BackgroundQuery = True
    .TablesOnlyFromHTML = True
    .Refresh BackgroundQuery:=False
    .SaveData = True
End With

Re: การดึงข้อมูลจากเว็ป 2 หน้า เพื่อมาลงใน excel ต้องทำอย่างไรครับ

Posted: Tue Jan 13, 2015 8:36 pm
by bboy_access
ได้ความรู้อีกเยอะเลย
ขอบคุณมากๆเลยครับ