- 帖子
- 13
- 主題
- 4
- 精華
- 0
- 積分
- 17
- 點名
- 0
- 作業系統
- mac
- 軟體版本
- os10
- 閱讀權限
- 10
- 註冊時間
- 2015-6-16
- 最後登錄
- 2015-8-10
|
9#
發表於 2015-7-4 15:28
| 只看該作者
不好意思,想要再詢問一下
range這樣的寫法出了什麼問題嗎?
Range("a" & i - 1 * 100 + 88 & ":l " & i * 100 + 88).Copy j
為什麼每次執行的時候都出現1004錯誤
整組code見附件,主要是要用vba叫ie,複製貼上其內容至excel
(會這樣操作是因為該網址無法用querytable下載)- Sub 擷取yahoofinanceetf()
- Dim j As Range
- Dim i As Integer
- Dim url As String
-
- Cells.Clear
-
- Application.ScreenUpdating = False
- Set ie = CreateObject("internetexplorer.application")
- For i = 1 To 16 '欲複製下載的網頁頁數有16頁
- With ie
- .Visible = False
- .Navigate "http://finance.yahoo.com/etf/lists/?mod_id=mediaquotesetf&tab=tab4&scol=avgcap&stype=desc&rcnt=100&page=" & i
- Do While .ReadyState <> 4
- DoEvents
- Loop
- .ExecWB 17, 2
- .ExecWB 12, 2
- End With
- If i = 1 Then '如果是第一頁的話從A1開始貼
- Range("A1").Select
- ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
- False, NoHTMLFormatting:=True
-
- Range("a87:l187").Copy Range("a1") '因為是全頁複製故只將所需的表格複製貼上到指定位置
- Range("a102:l302").Clear '除以上所需外之後的內容清除
- Else '如果是第二頁之後的內容
- Set j = Cells(Rows.Count, "a").End(xlUp).Offset(1) '將range J指定在使用過儲存格的下一個空白儲存格
- j.Select
- ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
- False, NoHTMLFormatting:=True
- Range("a" & i - 1 * 100 + 88 & ":l " & i * 100 + 88).Copy j '將所需的資料貼至range j
- j.EntireRow.Delete '將那一行整行刪除,因為是標題列,前面已有同樣內容
- Range("a" & i * 100 + 2 & ":l65536").Clear '除所需部份,其餘內容清除
- Set j = Nothing '清除j的賦值,下次循環再重新定義新的range j
- End If
- Next i
-
- ie.Quit
-
- End Sub
複製代碼 |
|