Board logo

標題: [發問] EXCELE 2013 vba for windows 10 無法正常執行 [打印本頁]

作者: frantz    時間: 2015-9-8 18:28     標題: EXCELE 2013 vba for windows 10 無法正常執行

請問各位資深前輩
小弟近日使用windows 10環境下執行此編碼
發現按了之後,數據全抓不到。
但在windows 7環境下確可以。
不知道是網站寫法有改了,還是本身系統造成的
如果是系統造成的,請問有沒有別的方式可以進行調整。。。
  1. Private Sub CommandButton4_Click()
  2.    Dim i As Integer, S As Integer, k As Integer, a As Object, ii, j, i1 As Integer, i2 As Integer, i3 As Integer
  3.   'DataObject 物件 在進行轉換動作時,做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。
  4.     '宣告 Dim D As New DataObject '須在工具-> 設定引用項目加入 新增引用 Microsoft Forms 2.0 Object Library ,或於專案 加入一表單即可

  5. '證交所信用交易統計------------------------------------
  6.   
  7.   'i3 = Mid(j, 1, 4)
  8.   'Sheets("量").Range("q1").Value = i3
  9.   'rul = "http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report" & "/A112" & j & "MS.php?select2=MS&chk_date=" & 104 & "/" & 3 & "/" & 13
  10.   '"http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report201503/A11220150313MS.php?select2=MS&chk_date=104/03/13"
  11.   'http://www.tpex.org.tw/web/stock/margin_trading/margin_balance/margin_bal_print.php?l=zh-tw&d=104/04/01&s=0,asc,1

  12.   'j = Sheets("量").Range("a1").Value
  13.   Application.DisplayStatusBar = True
  14.     Application.ScreenUpdating = False
  15.     Sheets("量").Range("Q1").Select
  16.     ActiveCell.FormulaR1C1 = "=TEXT(MID(RC[-16],1,LEN(RC[-16])),""YYY"")"
  17.    
  18.     Sheets("量").Range("R1").Select
  19.     ActiveCell.FormulaR1C1 = "=TEXT(MID(RC[-17],1,LEN(RC[-17])),""mm"")"
  20.    
  21.     Sheets("量").Range("S1").Select
  22.     ActiveCell.FormulaR1C1 = "=TEXT(MID(RC[-18],1,LEN(RC[-18])),""dd"")"
  23.    
  24.     Sheets("量").Range("T1").Select
  25.     ActiveCell.FormulaR1C1 = "=TEXT(MID(RC[-19],1,LEN(RC[-19])),""e"")"
  26.     j = Sheets("量").Range("q1").Value
  27.     j1 = Sheets("量").Range("r1").Value
  28.     j2 = Sheets("量").Range("s1").Value
  29.     j3 = Sheets("量").Range("t1").Value
  30.     'http://www.tpex.org.tw/web/stock/margin_trading/margin_balance/margin_bal_print.php?l=zh-tw&d=104/04/01&s=0,asc,1
  31.     'http://www.tpex.org.tw/web/stock/margin_trading/margin_balance/margin_bal_print.php?l=zh-tw&d=104/08/17&s=0,asc,1

  32.     ii = "http://www.tpex.org.tw/web/stock/margin_trading/margin_balance/margin_bal_print.php?l=zh-tw&d=" & j3 & "/" & j1 & "/" & j2 & "&s=0,asc,1"
  33.   Sheets("量").Range("o1").Value = i
  34.     With CreateObject("InternetExplorer.Application")
  35.         '.Visible = False
  36.         '.Navigate "http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report201503/A11220150313MS.php?select2=MS&chk_date=104/03/13"
  37.         .Navigate ii
  38.         '上面為證交所三大法人買賣金額統計表連結
  39.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  40.         Application.Wait (Now + TimeValue("00:00:10"))
  41.         Ep15 .document.getElementsByTagName("table")(0).outerhtml
  42.         '關閉網頁
  43.         .Quit
  44.         
  45.         
  46.     End With
  47.      Set a = CreateObject("InternetExplorer.Application")
  48.      Set a = Nothing
  49. Application.StatusBar = False

  50. End Sub
  51. Sub Ep15(S As String)
  52.      Dim d As New DataObject
  53.      Dim shape As Excel.shape
  54.     Application.DisplayStatusBar = True
  55.     Application.ScreenUpdating = False
  56.     'DataObject 物件 在進行轉換動作時,做為格式化文字資料的暫存區域。其也可以暫存和儲存在 DataObject 的文字片段相關的格式。
  57.     '宣告 Dim D As New DataObject '須在工具-> 設定引用項目加入 新增引用 Microsoft Forms 2.0 Object Library ,或於專案 加入一表單即可
  58.     With d
  59.         .SetText S
  60.         .PutInClipboard
  61.         With Sheets("上市櫃三大法人").Select
  62.             Sheets("上市櫃三大法人").Range("P10:AI12").Clear
  63.             Sheets("上市櫃三大法人").Range("P10").Select
  64.             Sheets("上市櫃三大法人").PasteSpecial Format:="Unicode 文字"
  65.             For Each shape In ActiveSheet.Shapes
  66.         shape.Delete
  67.         Next
  68.         xRow = Sheets("上市櫃三大法人").Range("P65536").End(xlUp).Row
  69.              For i = 15 To xRow
  70.             If Sheets("上市櫃三大法人").Range("P" & i).Value = "合計(張)" Then
  71.             
  72.              Sheets("量").Range("M5").Value = Sheets("上市櫃三大法人").Range("V" & i).Value
  73.              Sheets("量").Range("N5").Value = Sheets("上市櫃三大法人").Range("ad" & i).Value
  74.              End If
  75.            If Sheets("上市櫃三大法人").Range("P" & i).Value = "融資金(仟元)" Then
  76.              Sheets("量").Range("O5").Value = Sheets("上市櫃三大法人").Range("V" & i).Value
  77.              End If
  78.        Next
  79.         End With
  80.         
  81.     End With
  82.     Set d = Nothing
  83.          
  84.   

  85. Application.StatusBar = False
  86.     Sheets("量").Select
  87.     Sheets("量").Range("A1").Select
  88.     MsgBox "上櫃(信)下載完成!"
  89. End Sub
複製代碼

作者: Joforn    時間: 2015-9-11 21:16

测试一下是否是CreateObject("InternetExplorer.Application")返回的值为Nothing
作者: lp986749    時間: 2015-9-14 11:46

本帖最後由 lp986749 於 2015-9-14 11:49 編輯

我也發生過用EXCEL 2007 2003 寫巨集在 WIN 7  WIN8 WIN8.1下用 OFFICE2013 都可執行很順利 但在 WIN 10 相同OFFICE2013 卻當機不能執行巨集 自己也很困擾  不知為什麼原因?
作者: ting870520    時間: 2015-9-15 08:42

回復 1# frantz

你好:我對VBA不懂,但我看到你的VBA裡有很多地方使用到中華民國曆,不知你是否有發現到在WIN10的環境下,EXCEL已經無法使用"中華民國曆"了,我想是否是因為這個原因。以上只是我個人的猜想,如有錯誤,還請指教!!謝謝!!
作者: lp986749    時間: 2015-9-16 10:00

確實WIN10的環境下,EXCEL已經無法使用"中華民國曆"了,EXCEL 2007 2003 寫巨集如
Format(Date - 30, "EMM") 須改為 Format(Date - 30, "EEMM") 原顯示 10408 後者顯示201508
巨集就可執行 因為WIN10 日期格式更改如2012/02/10
作者: lp986749    時間: 2015-9-16 10:01

確實WIN10的環境下,EXCEL已經無法使用"中華民國曆"了,EXCEL 2007 2003 寫巨集如
Format(Date - 30, "EMM") 須改為 Format(Date - 30, "EEMM") 原顯示 10408 後者顯示201508
巨集就可執行 因為WIN10 日期格式更改如2012/02/10




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)