ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] vba ¾Þ§@ie¶×¤J¸ê®Æ

[µo°Ý] vba ¾Þ§@ie¶×¤J¸ê®Æ

¦U¦ì¦n
½Ð°Ý¯à¥Hvba ¶}±Ò¥H¤Uºô§}¨Ã§¹¦¨
http://mops.twse.com.tw/mops/web/t164sb04
1.³Ì·s¸ê®Æ§ï¦¨¾ú¥v¸ê®Æ
2.¤½¥q¥N¸¹¿é¤J2330
3.¦~«×102
4.¿ï²Ä¤@©u
¨Ã¦b¬d¸ß¥X¸ê®Æ«á¶×¤Jexcel,

¦]¬°¤µ¦~«×IFRS¤W¸ô«á,¤½¶}¸ê°T¯¸¤j§ïª©,­ì¥»¥i¥H¥Îhttp»yªk¬d¸ß¥X­Ó§O¤½¥q³øªí,
±æºô¥S¤£§[«ü±Ð,·PÁÂ

¥»©«³Ì«á¥Ñ GBKEE ©ó 2013-5-19 15:36 ½s¿è

¦^´_ 1# randomwalk
³oºô­¶: µL½×¬O[³Ì·s¸ê®Æ] ©Î [¾ú¥v¸ê®Æ] ªº¸ê®Æ³£¤@¼Ë???
  1. Sub Ex()
  2.     Dim i As Integer, s As Integer, k As Integer, A, ii, j
  3.     Dim co_id As String, isnew As String, season As String
  4.     co_id = InputBox("½Ð¿é¤J ¤½¥q¥N¸¹")
  5.     If Not IsNumeric(Val(co_id)) Or Len(co_id) <> 4 Then Exit Sub              '¤£¬O¥|¦ì¼Æªº¼Æ¦r
  6.     isnew = InputBox("1:³Ì·s¸ê®Æ¡A¢±:¾ú¥v¸ê®Æ" & vbLf & "½Ð¿ï 1 , 2")
  7.     If isnew <> "1" And isnew <> "2" Then Exit Sub                              '¨S¿ï1 ©Î 2
  8.     If isnew = "2" Then season = InputBox("¿é¤J¦~«× , ©u§O" & vbLf & "¨Ò 101,01")
  9.                                     '²Ä¤@©u 01,²Ä¤G©u 02²Ä¤T©u 03,²Ä¥|©u 04.
  10.     With CreateObject("InternetExplorer.Application")
  11.         .Visible = True
  12.         .Navigate "http://mops.twse.com.tw/mops/web/t164sb04"
  13.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  14.         With .document
  15.             For Each A In .getelementsbytagname("INPUT")
  16.                 If A.Name = "co_id" Then A.Value = co_id
  17.             Next
  18.             For Each A In .getelementsbytagname("SELECT")
  19.                 If A.Name = "isnew" Then
  20.                     A.Value = True
  21.                     If isnew = "2" Then
  22.                         A.Focus
  23.                         Application.Wait Now + #12:00:02 AM#
  24.                         Application.SendKeys "{DOWN}"
  25.                         Application.Wait Now + #12:00:02 AM#
  26.                         Application.SendKeys "{ENTER}"
  27.                     End If
  28.                 End If
  29.                 If A.Name = "year" And isnew = "2" Then A.Value = Split(season, ",")(0)
  30.                 If A.Name = "season" And isnew = "2" Then A.Value = Split(season, ",")(1)
  31.             Next
  32.             For Each A In .getelementsbytagname("INPUT")
  33.                 If Trim(A.Value) = "·j´M" And A.Name <> "rulesubmit" Then A.Click        '«ö¤U[·j¯Á]Áä
  34.             Next
  35.         End With
  36.         Application.Wait Now + #12:00:10 AM#                     'µ¥«Ýºô­¶¤U¸ü¸ê®Æ
  37.         Set A = .document.getelementsbytagname("table")
  38.         On Error Resume Next       '***¦³¨Çtable¨SRows¸ê®Æ·|²£¥Í¿ù»~ ¤£²z·|¥¦,µ{¦¡Ä~Äò¨«
  39.         With ActiveSheet
  40.             .Cells.Clear
  41.            '************************
  42.            ' For ii = 0 To A.Length - 1        '¤£ª¾¹Dtable½d³ò¦b¦ó³B: ±q0¶}©l
  43.            '******************************
  44.             For ii = 11 To A.Length - 1        ''±q11¶}©l ¥Î Debug.Print ii  §ä¥X©Ò­n¸ê®Æªºtable½d³ò
  45.                 For i = 0 To A(ii).Rows.Length - 1      '¼g¤J¸ê®Æ
  46.                 'Debug.Print ii  ¥i§ä¥X©Ò­n¸ê®Æªº table ½d³ò
  47.                 k = k + 1
  48.                 For j = 0 To 5
  49.                     Cells(k, j + 1) = A(ii).Rows(i).Cells(j).innerText
  50.                 Next
  51.             Next
  52.             Next
  53.             .Range("C5").Cut Range("D5")
  54.             With .Range("B5:C5,D5:E5")
  55.                 .HorizontalAlignment = xlCenter
  56.                 .VerticalAlignment = xlCenter
  57.                 .Merge
  58.             End With
  59.         End With
  60.         .Quit        'Ãö³¬ºô­¶
  61.     End With
  62. End Sub
½Æ»s¥N½X
  1. Option Explicit
  2. Dim ºô­¶ As Object
  3. Sub Ex²©ö¤â°Ê()
  4.     'µ{¦¡²Ä¤@¦¸°õ¦æ: ¥´¶}ºô­¶,¦bºô­¶¤¤¤â°Ê,¿ï¾Ü¸ê®Æ«á , «ö[·j´M]Áä!!
  5.     'µ{¦¡²Ä¤G¦¸°õ¦æ: Ū¨úºô­¶¸ê®Æ¨ì Excel¤¤.
  6.     '©¹«á¦bºô­¶¸ê®Æ¦³­×§ï,¥u»Ý°õ¦æ¤@¦¸§Y¥iŪ¨úºô­¶¸ê®Æ¨ì Excel¤¤.
  7.     Dim i As Integer, ii As Integer, k As Integer, j As Integer, A As Object
  8.     On Error GoTo REºô­¶
  9. 1:
  10.     If ºô­¶ Is Nothing Then
  11.         Set ºô­¶ = CreateObject("InternetExplorer.Application")
  12.          With ºô­¶
  13.             .Visible = True
  14.             .Navigate "http://mops.twse.com.tw/mops/web/t164sb04"
  15.             .Height = 500
  16.             .Width = 1300
  17.         End With
  18.         Application.WindowState = xlMinimized  'Excel ³Ì¤p¤Æ
  19.         Exit Sub
  20.     End If
  21.     If ºô­¶.Visible = False Then
  22.         ºô­¶.Value = True
  23.         Application.WindowState = xlMinimized
  24.         Exit Sub
  25.     End If
  26.     '**********Ū¨úºô­¶ ¸ê®Æ *******************
  27.     Set A = ºô­¶.document.getelementsbytagname("table")
  28.     With ActiveSheet                               '§@¥Î¤¤ªº¤u§@ªí
  29.          .Cells.Clear
  30.          On Error Resume Next
  31.         For ii = 11 To A.Length - 1                     
  32.             For i = 0 To A(ii).Rows.Length - 1      '¼g¤J¸ê®Æ
  33.                 k = k + 1
  34.                 For j = 0 To 5
  35.                     Cells(k, j + 1) = A(ii).Rows(i).Cells(j).innerText
  36.                 Next
  37.             Next
  38.         Next
  39.         .Range("C5").Cut .Range("D5")
  40.         With .Range("B5:C5,D5:E5")
  41.             .HorizontalAlignment = xlCenter
  42.             .VerticalAlignment = xlCenter
  43.             .Merge
  44.         End With
  45.     End With
  46. Exit Sub
  47. REºô­¶:   '
  48.      Set ºô­¶ = Nothing
  49.     Resume 1
  50. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 2# GBKEE


    ½Ð°ÝGBKEE¤j¤j¡A¦pªG­n¤@¦¸¿é¤J§ó¦h¤½¥q¥N¸¹Åýµ{¦¡¦Û°Ê¤U¸ü«á¥t¦s·sÀÉ¡AÀ³¸Ó¦p¦ó­×§ï¡AÁÂÁ¡C

TOP

¦^´_ 2# GBKEE


ÁÂÁÂGBKEE«ü¾É
³o­Óºô­¶¬Oºî¦X·l¯qªí,2013¦~«á¤W¥«Âd¤½¥q¥Ñ¤½¥¬·l¯qªí§ï¬°¤½¥¬ºî¦X·l¯qªí,
¥Ø«e¥u¦³²Ä¤@©u¤½¥¬,©Ò¥H³Ì·s¸ê®Æ¸ò¾ú¥v¸ê®Æ³£¬O²Ä¤@©u,
µ¥²Ä¤G©u¤½¥¬«á,´N¤£¦P¤F

¦A½Ð±Ð:
¤p§Ì²ßºD¥Î¥H¤U³oºØ»yªk¦b§ìºô­¶,¦ü¥G«e´£¬O¯à°÷§ä¥X¸ê®Æªºhttp,½Ð°Ý¤W­±ªººî¦X·l¯qªí¯à°÷§ä¥X¶Ü?
With ActiveSheet.QueryTables.Add(Connection:="URL;http://dj.mybank.com.tw/z/zc/zca/zca_" & mywb1.Sheets("Price").Cells(i, "A") & ".asp.htm", Destination:=Range("$A$1"))
End With

¥t¥~GBKEE¥S¤W­±´£¨Ñªºµ{¦¡¤¤,¥Î¨ìªº
.getelementsbytagname("INPUT")    =>"co_id" ¬°¤½¥q¥N¸¹
.getelementsbytagname("SELECT")   =>¦³"isnew" "year" "season"
½Ð°Ý­n«ç¼Ë±qºô­¶ª¾¹D¬O("INPUT")  ©Î¬O("SELECT")  ,¥H¤Î¦p¦ó§ä¥X¥L­Ìªºname ¦U¬O"isnew" "year" "season",

·PÁÂGBKEE¥SÄ@·N«ü¾É,ÁÂÁÂ

TOP

¦^´_ 3# yuch8663
¦pªG­n¤@¦¸¿é¤J§ó¦h¤½¥q¥N¸¹Åýµ{¦¡¦Û°Ê¤U¸ü«á¥t¦s·sÀÉ
§A­n¦p¦ó¦sÀÉ? µ¹­Ó½d¨Ò¤~ª¾­n¦p¦ó­×§ï.
¦^´_ 4# randomwalk
§ïª©³Ì¤j´N¬O¤£Åý¥Î QueryTables.Add ¤j¶qŪ¨ú¸ê®Æ,§@¬y¶q±±ºÞªº.

¦p¹ÏºCºC¬ã¨s

   
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¥H2498¦b102¦~²Ä¤@©uªº¸ê®Æ¨Ó»¡
varbody="encodeURIComponent=1&step=1&firstin=1&off=1&keyword4=&code1=&TYPEK2=&checkbtn=&queryName=co_id&TYPEK=all&isnew=false&co_id=2498&year=102&season=01"
¥Ñ¦¹¥i¥HÆ[¹î¨ì¹ïÀ³ªº°Ñ¼Æ¦ì¸m
¨Ï¥Îpost¤èªk
³Ì«á¥t¦s¦¨csv
§ï¤@¤U´N¥i¥H¥þ³¡¤U¸üÅo
§Úªºvba¥¿¦b¶]¤£¯à´ú ©Ò¥H¥H¤W¬Ò²q´ú ¤£¹L³o¨Çºô¯¸ªº­ì²z´X¥G³£¤@¼Ë...

TOP

ÁÂÁª©¤jªº°ÝÃD¡A¤]ÁÂÁÂg¤jªº¦^ÂСA­è¦n§Ú¤]¦b·Q­n¦p¦óµo°Ý¡C

G¤j·Q½Ð±Ð¤@¤U¡A
§Ú±N§AªºªíÀY§ï¬°

For DQ = 1 To 5
    DQQ = 6
    Sheets(DQQ).Select
     co_id = Range("A" & DQ).Value
     Sheets(DQ).Select
    'If Not IsNumeric(Val(co_id)) Or Len(co_id) <> 4 Then Exit Sub              '¤£¬O¥|¦ì¼Æªº¼Æ¦r
    isnew = 1

¤]´N¬O»¡¡A§Ú±N­ÓªÑªº¥N¸¹©ñ¦bpage6ªºa1¡ãa5¡A¦ý¬O·Q½Ð±Ð¤@¤U¡A
¬°¦ó¥u¦³²Ä¤@¶µªº¸ê®Æ·|¶i¤Jpage1¡A¨ä¥Lªºpage2 ~ page5 §¡¬°ªÅ¥Õ¡A
¤£¾å±o±zªºµ{¦¡­þ¸ÌÁٻݭn°Ê¨ì¡C
Thanks.

TOP

¦^´_ 7# cji3cj6xu6
½Ð¤W¶ÇÀÉ®×»¡©ú¤@¤U.
¨S¬Ý¨ì§¹¾ãªºµ{¦¡j§Ú¤]¤£¾é¸Ñ, ¬°¦ó¥u¦³²Ä¤@¶µªº¸ê®Æ·|¶i¤Jpage1¡A¨ä¥Lªºpage2 ~ page5 §¡¬°ªÅ¥Õ¡A
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

Dear G¤jÁÂÁ±zªº¶O¤ß¡A¦p¤W©Ò´£¡A§Ú¥u­×§ïªíÀY»Pendsub«eªºNext DQ¡A¶È¦¹¦Ó¤w¡A
¹ê»Ú¤W¤]¬Ý¨ìIEªºªÑ²¼¥N¸¹¦³°Ê§@¡A¦ýpage2 ~page5 ¨Ã¨S¦³±N¸ê®Æ±a¶i¨Ó??

Sub Ex()
    Dim i As Integer, s As Integer, k As Integer, A, ii, j
    Dim co_id As String, isnew As String, season As String
    Dim DQ as Integer, DQQ As Integer
     For DQ = 1 To 5
    DQQ = 6
    Sheets(DQQ).Select
     co_id = Range("A" & DQ).Value
     Sheets(DQ).Select
    isnew = 1
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "http://mops.twse.com.tw/mops/web/t164sb04"
        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
        With .document
            For Each A In .getelementsbytagname("INPUT")
                If A.Name = "co_id" Then A.Value = co_id
            Next
            For Each A In .getelementsbytagname("SELECT")
                If A.Name = "isnew" Then
                    A.Value = True
                    If isnew = "2" Then
                        A.Focus
                        Application.Wait Now + #12:00:02 AM#
                        Application.SendKeys "{DOWN}"
                        Application.Wait Now + #12:00:02 AM#
                        Application.SendKeys "{ENTER}"
                    End If
                End If
                If A.Name = "year" And isnew = "2" Then A.Value = Split(season, ",")(0)
                If A.Name = "season" And isnew = "2" Then A.Value = Split(season, ",")(1)
            Next
            For Each A In .getelementsbytagname("INPUT")
                If Trim(A.Value) = "·j´M" And A.Name <> "rulesubmit" Then A.Click        '«ö¤U[·j¯Á]Áä
            Next
        End With
        Application.Wait Now + #12:00:10 AM#                     'µ¥«Ýºô­¶¤U¸ü¸ê®Æ
        Set A = .document.getelementsbytagname("table")
        On Error Resume Next       '***¦³¨Çtable¨SRows¸ê®Æ·|²£¥Í¿ù»~ ¤£²z·|¥¦,µ{¦¡Ä~Äò¨«
        With ActiveSheet
            .Cells.Clear
           '************************
           ' For ii = 0 To A.Length - 1        '¤£ª¾¹Dtable½d³ò¦b¦ó³B: ±q0¶}©l
           '******************************
            For ii = 11 To A.Length - 1        ''±q11¶}©l ¥Î Debug.Print ii  §ä¥X©Ò­n¸ê®Æªºtable½d³ò
                For i = 0 To A(ii).Rows.Length - 1      '¼g¤J¸ê®Æ
                'Debug.Print ii  ¥i§ä¥X©Ò­n¸ê®Æªº table ½d³ò
                k = k + 1
                For j = 0 To 5
                    Cells(k, j + 1) = A(ii).Rows(i).Cells(j).innerText
                Next
            Next
            Next
            .Range("C5").Cut Range("D5")
            With .Range("B5:C5,D5:E5")
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .Merge
            End With
        End With
        .Quit        'Ãö³¬ºô­¶
    End With
Next DQ
End Sub

TOP

Dear G¤j¡A

§Ú§ä¨ì°ÝÃD¤F¡C
ÁÂÁ±z°eªº³o­ÓªZ¾¹¡A¦n¥Î¡C
¦]¬°K­È·|»¼¼W©Ò¼vÅT¡A©Ò¥H¦h¥[¤@¦æK=0§Y¥i¡C

For DQ = 1 To 5
    DQQ = 6
    Sheets(DQQ).Select
     co_id = Range("A" & DQ).Value
    Sheets(DQ).Select
    isnew = 1
    k = 0
    ...........
   Next DQ

TOP

        ÀR«ä¦Û¦b : ¡i®É¶¡µLªk¾B¾×¡j©È®É¶¡®ø³u¡Aªá¤F³\¦h¤ß¦å¡A·QºÉ¦U¦¡¤èªk­n¾B¾×®É¶¡¡Aµ²ªG¬O¡G®ö¶O¤F§ó¦h®É¶¡¡A¥B¤@µL©Ò¦¨¡I
ªð¦^¦Cªí ¤W¤@¥DÃD