Re: [VBA ] windows().activate的問題
※ 引述《oneil (百年孤寂)》之銘言:
: 請問一下各位大大
: 小弟剛接觸vba不久,遇到一個奇怪的問題
: 在使用windows().activate時
: 我從網頁上開啟一個excel file (a檔案)的超連結
: 然後要用另外一個EXCEL FILE (b檔案) 把 a 裡面的資料要複製到b
: 我使用window("a.xls").activate要把檔案a active起來以便選取複製
: 但是卻出現"超出索引範圍"的錯誤訊息。如果我把a存檔在開啟,之後執行我的程式
: 就沒有這個問題,好像是vba沒辦法抓到a檔案。請問一下有沒有解決的方法呢?
: 謝謝大家!
IE中的工作表不知道如何抓裡面的資料,
所以只能用下載後再用excel開啟的方式抓資料了
提供一個下載檔案的程式碼給你參考:
Dim WithEvents ix As Inet
Public Sub test()
Set ix = New Inet
ix.RemoteHost = "127.0.0.1" '此處填入該網站的ip位址
ix.RemotePort = 80 '網站預設都是80 port
ix.Execute "http://127.0.0.1/xxx.xls", "GET" '下載連結中的檔案
End Sub
Private Sub ix_StateChanged(ByVal State As Integer)
'狀態為 12,代表資料已接收完成...
'其他狀態請選取StateChanged然後按F1取得詳細說明
If State = 12 Then
Dim xx() As Byte
Open "c:\temp\xxx.xls" For Binary As #1
Do
xx = ix.GetChunk(1024, icByteArray) '指定每一次迴圈讀取1024bytes
If UBound(xx) < 0 Then Exit Do '到達檔案結尾時會得到空的陣列
Put #1, , xx '寫入至本機檔案,檔案路徑由 open 後的字串決定
Loop
Close #1
Readxls() '讀取xxx.xls的內容
End If
End Sub
Private Sub Readxls()
Dim wb As Workbook
Set wb = Workbooks.Open("c:\temp\xxx.xls")
Set ws = wb.Worksheets(1)
MsgBox ws.Range("A1").Value
wb.Close
Kill "c:\temp\xxx.xls" '刪除剛才建立的暫存檔
End Sub
--
▃▅▇▆▄ ▆▂▃ `
逝去感情如何能留住,半點癡情遺留殊不易,██▅▇▄▃ ▇▃▂" .
█████████▃i ▁▄▇
更多悽悽慘慘的遭遇…………██▆▃ █▅▆▃ˍ▄*
◢ ▂█▄▇▅▂▌.
我不知道,王~八~蛋~~! ▂▆███ █▄▃ 。fumizuki。Check。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.100.4
討論串 (同標題文章)