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

ÃÒ¥æ©Ò¥þ³¡¤W¥«ªÑ²¼¥æ©ö©ú²Ó¤U¸ü

¥»©«³Ì«á¥Ñ GBKEE ©ó 2012-8-5 09:23 ½s¿è

¦^´_ 1# white5168
´ú¸Õ §¹¦¨¹Ï


2012/8/5 §ó·sµ{¦¡½X
   
  1. Option Explicit
  2. Dim SH(1 To 2) As Worksheet, IE As Object
  3. Dim xltheCsv As String, xLMsg As String, Rng As Range
  4. Const xlPath = "D:\Test1\"                  '¥i­×§ïCSV¦sÀɪº¸ô®|
  5. Sub ¥þ³¡¤é³øªí()                            '¬d¸ß¥þ³¡¤éªÑ²¼³øªí
  6.     Dim T As Date
  7.     ¦sÀɸê®Æ§¨
  8.     T = Time
  9.     xLMsg = ""                              '¬ö¿ý ªÑ²¼¥N¸¹¨S³øªí
  10.     ¤W¥«ªÑ²¼¥N¸¹                            '¨ú±o³Ì·s¤W¥«ªÑ²¼¥N¸¹ªí
  11.     ºô­¶                                    '¶}±Òºô­¶
  12.     Set Rng = SH(1).[A3]                    'ªÑ²¼¥N¸¹
  13.     Do
  14.         Rng.Select
  15.         ActiveWindow.ScrollRow = Rng.Row - 1
  16.         Application.ScreenUpdating = False
  17.         If Rng.Offset(, 1) <> "" Then ¶×¤J¤é³øªí Trim(Split(Rng, " ")(0))                                            'Trim(Split(Rng, " ")(0)):ªÑ²¼¥N¸¹
  18.         Set Rng = Rng.Offset(1)             '¤U¤@­Ó ªÑ²¼¥N¸¹
  19.         Application.ScreenUpdating = True
  20.     'Loop Until Rng = ""                    '<-§t   ¤W¥«ªÑ²¼,¤W¥«»{ÁÊ(°â)ÅvÃÒ,¨ü¯qÃÒ¨é-¤£°Ê²£§ë¸ê«H°U--
  21.     Loop Until Rng.Offset(, 1) = ""         '<-¶È¦³ ¤W¥«ªÑ²¼ : BÄæ¬OªÅ¥Õ®ÉÂ÷¶}°j°é
  22.     SH(1).Parent.Close 0                    'Ãö³¬ ³Ì·s¤W¥«ªÑ²¼¥N¸¹ªí
  23.     IE.Quit                                 'Ãö³¬ ºô­¶
  24.     Set IE = Nothing
  25.     Set Rng = Nothing
  26.     MsgBox "¥þ³¡¤é³øªí¤U¸ü§¹¦¨ ¶O®É" & Format(T - Time, "HH®Émm¤Àss¬í") & Chr(10) & xLMsg
  27.     If xLMsg <> "" Then µL³øªí¬ö¿ý
  28. End Sub
  29. Sub ¬d¸ßªÑ²¼¤é³øªí()                        '¬d¸ß³æ¤@ªÑ²¼¤é³øªí
  30.     Dim ªÑ²¼¥N¸¹ As String, ªÑ²¼ As String, T As Date
  31.     ¦sÀɸê®Æ§¨
  32.     xLMsg = ""
  33.     Do While ªÑ²¼¥N¸¹ = ""
  34.         ªÑ²¼¥N¸¹ = InputBox("ªÑ²¼¥N¸¹", "¿é¤J¬d¸ß¤§ªÑ²¼¥N¸¹", "1101")
  35.         If ªÑ²¼¥N¸¹ = "" Then End
  36.     Loop
  37.     T = Time
  38.     ºô­¶
  39.     ¶×¤J¤é³øªí ªÑ²¼¥N¸¹
  40.     IE.Quit
  41.     Set IE = Nothing
  42.     If xLMsg <> "" Then
  43.         MsgBox xLMsg
  44.         µL³øªí¬ö¿ý
  45.         Exit Sub
  46.     Else
  47.         ªÑ²¼ = Replace(Replace(xltheCsv, ".CSV", ""), xlPath, "")
  48.         MsgBox ªÑ²¼ & Chr(10) & "¤U¸ü®É¶¡" & Format(T - Time, "HH®Émm¤Àss¬í") _
  49.         & Chr(10) & "¦sÀɸô®|: " & xlPath
  50.     End If
  51.     Workbooks.Open xltheCsv
  52.     ActiveSheet.Cells.EntireColumn.AutoFit
  53. End Sub
  54. Private Sub ¶×¤J¤é³øªí(ªÑ²¼¥N¸¹ As String)      '³B¸Ì¶Ç°e¨Óªº --ªÑ²¼¥N¸¹--
  55.     Dim Xall As Integer, SubMsg As String, SubRng As Range
  56.     Xall = Val(³øªí­¶¼Æ(ªÑ²¼¥N¸¹))              '¶Ç¦^³øªí­¶¼Æ
  57.     If Xall = 0 Then                            'µL³øªí­¶¼Æ: ³øªí¤£¦s¦b
  58.         If Rng Is Nothing Then
  59.             SubMsg = "[ " & ªÑ²¼¥N¸¹ & " ] µL³øªí"
  60.         Else                                    '¥þ³¡¤é³øªíµ{¦¡: §tªÑ²¼¦WºÙ
  61.             SubMsg = Rng & " µL³øªí"
  62.         End If
  63.         xLMsg = IIf(xLMsg <> "", xLMsg & Chr(10) & SubMsg, SubMsg)
  64.         Exit Sub
  65.     End If
  66.     Set SH(2) = Workbooks.Add(1).Sheets(1)       '·s¼W¤@¬¡­¶Ã¯
  67.     With SH(2).QueryTables.Add(Connection:="URl;http://bsr.twse.com.tw/bshtm/bsContent.aspx?StartNumber=" & ªÑ²¼¥N¸¹ & "&FocusIndex=All_" & Xall, Destination:=SH(2).Range("A1"))
  68.             .WebFormatting = xlWebFormattingNone
  69.             .WebTables = "4,""table2"""
  70.             On Error Resume Next                'µ{¦¡ÁÙ¦³¿ù»~¤£³B¸Ì
  71.             Do
  72.             Err.Clear                           '²M°£¿ù»~­È
  73.             .Refresh BackgroundQuery:=False     'Refresh ¥¢±Ñ ·|¦³¿ù»~­È
  74.             Loop While Err > 0                  '¦³¿ù»~­ÈÄ~Äò°j°é ª½¨ì  Refresh ¦¨¥\
  75.             On Error GoTo 0                     '¦³¿ù»~­È ¤£³B¸Ì
  76.             '®ø°£: On Error Resume Next ¦pÁÙ¦³¿ù»~¤£³B¸Ì ·|¼vÅT¹B¦æªº¥¿½T©Ê
  77.             SH(2).Names(.Name).Delete
  78.     End With
  79.     If Xall > 1 Then                              '³B¸Ì­¶¼Æ > 1  '²M²zªÅ¥Õ¦C¤Î ¨C­¶ªºÄæ¦ì
  80.         With SH(2)
  81.             Set SubRng = .Range(.[A6], .Cells(.Rows.Count, "A").End(xlUp))
  82.             SubRng.Replace "§Ç", "", xlWhole
  83.             SubRng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete xlUp
  84.         End With
  85.     End If
  86.     xltheCsv = xlPath & Format(SH(2).[B1], "yyyy_mm_dd ") & SH(2).[F1] & ".CSV"
  87.     On Error GoTo xlerr                             'xltheCsv  ¤w¶}±Ò·|¦³¿ù»~  ¨ìxLerr³B¸Ì
  88.     If Dir(xltheCsv) <> "" Then Kill xltheCsv
  89.     On Error GoTo 0
  90.     SH(2).Parent.SaveAs xltheCsv, xlCsv
  91.     SH(2).Parent.Close True
  92.     Exit Sub
  93. xlerr:
  94. If Err = 70 Then
  95.     Workbooks(Format(SH(2).[B1], "yyyy_mm_dd ") & SH(2).[F1] & ".CSV").Close 0   'Ãö³¬xltheCsv ¥i²M°£¿ù»~
  96.     Resume                                                                       '¤Ï¦^¿ù»~¦æ
  97. Else
  98.     MsgBox "¿ù»~­È " & Err & " »Ý°»¿ù!!"
  99.     End
  100. End If
  101. End Sub
  102. Private Sub ¤W¥«ªÑ²¼¥N¸¹()  '¤U¸ü³Ì·s¥N¸¹ ( ¤W¥«ªÑ²¼,¤W¥«»{ÁÊ(°â)ÅvÃÒ,¨ü¯qÃÒ¨é-¤£°Ê²£§ë¸ê«H°U )
  103.     Dim SstockId  As String
  104.     SstockId = "URL;http://brk.twse.com.tw:8000/isin/C_public.jsp?strMode=2"
  105.     Set SH(1) = Workbooks.Add(1).Sheets(1)
  106.     With SH(1).QueryTables.Add(SstockId, SH(1).[A1])
  107.         .WebFormatting = xlWebFormattingNone
  108.         .WebTables = "2"
  109.         .Refresh 0
  110.     End With
  111. End Sub
  112. Private Sub ºô­¶()             '¶}±Òºô­¶
  113.     Dim Url As String
  114.     Set IE = CreateObject("InternetExplorer.Application")
  115.     Url = "http://bsr.twse.com.tw/bshtm/bsMenu.aspx"
  116.     With IE
  117.         '.Visible = False   ''¥i¥H¤£Åã¥Ü IE
  118.           .Visible = True
  119.         .Navigate "http://bsr.twse.com.tw/bshtm/bsMenu.aspx"
  120.         Do While .Busy Or .ReadyState <> 4
  121.             DoEvents
  122.         Loop
  123.     End With
  124. End Sub
  125. Private Sub ¦sÀɸê®Æ§¨()     '¨S¦³CSV¦sÀɪº¸ô®|: ³]¥ßCSV¦sÀɪº¸ô®|
  126.     If Dir(xlPath, vbDirectory) = "" Then MkDir xlPath
  127. End Sub
  128. Private Sub µL³øªí¬ö¿ý()   '¤u§@ªí¤W¬ö¿ý ¨S³øªíªºªÑ²¼¥N¸¹
  129.     With ThisWorkbook.Sheets(1)
  130.         .Activate
  131.         If .[A1] = "" Then .[A1] = "ªÑ²¼: µL³øªí"
  132.         .Cells(.Rows.Count, "a").End(xlUp).Offset(1).Resize(UBound(Split(xLMsg, Chr(10))) + 1) = Application.Transpose(Split(xLMsg, Chr(10)))
  133.     End With
  134. End Sub
  135. Private Function ³øªí­¶¼Æ(Sstock_N0 As String)
  136.     Dim element As Object
  137.     On Error GoTo xlerr:
  138. xlAgain:
  139.     Set element = IE.Document.getElementsByName("txtTASKNO")
  140.     element.Item(0).Value = Sstock_N0
  141.     Set element = IE.Document.getElementsByName("btnOK")
  142.     element.Item(0).Click
  143.     With IE
  144.         Do While .Busy Or .ReadyState <> 4
  145.             DoEvents
  146.         Loop
  147.     End With
  148.     Set element = IE.Document.getElementsByName("sp_ListCount")
  149.     ³øªí­¶¼Æ = element.Item(0).innertext
  150.     Exit Function
  151. xlerr:        '³B¸Ìºô­¶¤¤Â_
  152.     IE.Quit
  153.     ºô­¶
  154.     Err.Clear
  155.     GoTo xlAgain
  156. End Function
½Æ»s¥N½X

TOP

¦^´_ 8# HSIEN6001
¦^´_ 9# HSIEN6001
½Ð°Ý¤¤Â_®Éªº¿ù»~­È¬O¦h¤Ö

¦^´_ 10# devidlin
½Æ»sµ{¦¡½X«á
°õ¦æ   ¥ý°õ¦æ   Sub ¬d¸ßªÑ²¼¤é³øªí()               ¦A¸Õ¸Õ        Sub ¥þ³¡¤é³øªí()

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2012-8-4 17:07 ½s¿è

¦^´_ 13# white5168     ÁÂÁ§Aªº´£¿ô «ü±Ð  
¦^´_ 15# c_c_lai           ¦^´_ 16# HSIEN6001  
white5168  ªº«ü±Ð­×§ï¦p¤U
  1. Private Function ³øªí­¶¼Æ(Sstock_N0 As String)
  2.     Dim element As Object
  3.     On Error GoTo xlerr:
  4. xlAgain:
  5.     Set element = IE.Document.getElementsByName("txtTASKNO")
  6.     element.Item(0).Value = Sstock_N0
  7.     Set element = IE.Document.getElementsByName("btnOK")
  8.     element.Item(0).Click
  9.     With IE
  10.         Do While .Busy Or .ReadyState <> 4
  11.             DoEvents
  12.         Loop
  13.     End With
  14.     Set element = IE.Document.getElementsByName("sp_ListCount")
  15.     ³øªí­¶¼Æ = element.Item(0).innertext
  16.     Exit Function
  17. xlerr:        '³B¸Ìºô­¶¤¤Â_
  18.     IE.Quit
  19.     ºô­¶
  20.     Err.Clear
  21.     GoTo xlAgain
  22. End Function
½Æ»s¥N½X

TOP

¦^´_ 22# white5168
»¡ªº¦n²z¹D¥X: ¤U¸ü¿ù»~ÂIªº­ì¦]
¦hÁµoªíÀ°¤j²³¸Ñ´b

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2012-8-5 07:20 ½s¿è

¦^´_ 31# HSIEN6001
¥á­Ó¨S¦³¥æ©ö¶R½æªº¥N¸¹µ¹¥¦,´N¨ê¤£°±¤F,¨Ò¦p§NªùªºªÑ²¼,¥¦ªº¥æ©ö¶q¦³¥i¯à¬O " 0 ",´N·|¥X²{µL¥æ©ö¸ê®Æ,·íµM´N¨ú¤£¨ì  "­¶¼Æ"


°õ¦æ 7#   Sub ¬d¸ßªÑ²¼¤é³øªí()    '¬d¸ß³æ¤@ªÑ²¼  ¥ß§Y¥iª¾¦³µL¥æ©ö¶q

7#  --- 57¦æ  ¬O³B¸Ì¥æ©ö¶q¬O " 0 "
54¦æ    Private Sub ¶×¤J¤é³øªí(ªÑ²¼¥N¸¹ As String)      '³B¸Ì¶Ç°e¨Óªº --ªÑ²¼¥N¸¹--
55¦æ    Dim Xall As Integer, SubMsg As String, SubRng As Range
56¦æ    Xall = Val(³øªí­¶¼Æ(ªÑ²¼¥N¸¹))              '¶Ç¦^³øªí­¶¼Æ
57¦æ    If Xall = 0 Then                                       'µL³øªí­¶¼Æ: ³øªí¤£¦s¦b
58¦æ
        If Rng Is Nothing Then
--------------------------------
18# ­×¥¿ªº Private Function ³øªí­¶¼Æ(Sstock_N0 As String) ¨ç¼Æµ{¦¡½X
¥i³B²z :  white5168 »¡ªº¦pªGIE¨S¦³¶}§¹¾ã,±N·|¾É­PµLªk¨ú±o¹ïÀ³ªºª«¥ó
·í ³øªí­¶¼Æ = element.Item(0).innertext  ¦³¿ù»~®É¤~·|­«·s¶}±Ò IE,
IE ¥¿±`®É element.Item(0).innertext=""   ¬°µL³øªí­¶¼Æ   ¤£¼K¦³¿ù»~²£¥Í

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2012-8-5 09:39 ½s¿è

·q§i¦U¦ì ·|­û
§Æ±æ¦U¦ì¦b¦^¤å®É ¦r¥yªº­×¹¢¬O¥²¶·ªº,­n¦Ò¼{¨ì¹ï¤è¦³¤£µÎªAªº·P¨ü,½Ð¤£­n»s³y¥X¤¬¬Û§ðÀ»ªºª^³ò
¦b³o½×¾Â¤W §Ú¯uªº¬O¦³·P¨ü¨ì¡e±Ð¾Ç¬Ûªø¡f®ÄÀ³ªº¦s¦b

¦^´_ 39# HSIEN6001
1#   ªþÀɦ³»¡©ú :  "²{¦bªþ¤W¨Ï¥Îpython»PExcel VBA°õ¦æ§¹¦¨ªº¹Ï®×,python°õ¦æªº®É¶¡2603¬í,Excel VBA°õ¦æ®É¶¡7598¬í(¥¼Àu¤Æ«e),¨âªÌ¬Û®t¬ù2.9­¿"
¤W­zªº®t²§ 39#¤¤¤@¬q:  "Do ....Loop ·|³y¦¨¶ë¨®°ÝÃD¡C¡@§Ú¥u¬O·Q¡­¢±¢±¼Ó§A¼gªº¨º¬q¡F­è¦n»P§Aªº°j¸ô³]­p¬O­IÂ÷ªº"   ³o¸Ì¹D¥X²£¥Í"³t²vªº®t²§"

©Ò¥H§Ú 7#  ªºµ{¦¡­×¥¿¤£¥²­nªº°j°é,  ®ø°£2.9­¿ªº³t²v,¦ýÁÙ¬O¦³¯ÊÂI  ¸g white5168   «üÂI  ¦b18# ­×§ï¤F  ¦b³o¸Ì§Ú´N¦³¦¬¨ì ¡e±Ð¾Ç¬Ûªø¡f®ÄÀ³
§A¥i¦A´ú¸Õ 7#  ªºµ{¦¡¬Ý¬Ý  python°õ¦æªº®É¶¡2603¬í,Excel VBA°õ¦æ®É¶¡7598¬í ÁÙ¦³2.9­¿ªº³t²vªº®t²§¶Ü? ,
¥i»¡©ú ¶ë¨®°ÝÃD ¬O§_¬O¥¿½Tªº

PS: 7#ªºµ{¦¡½X¤w§ó·s¦P 18#  

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2012-8-5 09:54 ½s¿è

¦^´_ 42# white5168
§A³o ¥¼Àu¤Æ »P§Ú 7# ¥¼§ó·s«eªºµ{¦¡¤@¼Ë ©|¥¼´ú¸Õ½T©w¨S°ÝÃD´N«æµÛ±À¥X ¦³ÂIÃþ¦ü
´Á«Ý §AÀu¤Æ«á VBA    ·| [ ±Ð¾Ç¬Ûªø ] ªº
·Q½Ð±Ð python ¤]¬O¥¼Àu¤Æ ¶Ü?

TOP

        ÀR«ä¦Û¦b : ¬Ý§O¤H¤£¶¶²´¡A¬O¦Û¤v­×¾i¤£°÷¡C
ªð¦^¦Cªí ¤W¤@¥DÃD