返回列表 上一主題 發帖

[發問] vba自動儲存網頁檔案

[發問] vba自動儲存網頁檔案

請問如何讓以下程式碼,執行到檔案下載的時候,自動儲存檔案至同資料夾並保持原檔名.csv檔(下載檔案為.csv檔)

Sub 查詢每日數據並下載檔案()
Dim indexer As Integer
indexer = 6656 + Day(Now()) - 23

Set myIE = CreateObject("InternetExplorer.Application")
With myIE
.Visible = true
.Navigate "http://xxxxxxxxxxxx/xxx.aspx" '查詢數據網址

Do While .ReadyState <> 4
DoEvents
Loop

.Navigate "javascript:__doPostBack('ct600$phCondition3$cldDate','" & indexer & "')"
Application.Wait Now + 2 / 86400 '等待2秒
.document.forms(0).all("ct600_btnConfirm").Click '點選查詢按鈕

.Navigate "http://10.178.1.140:8023/ReportPage/ReportAgentToDay_28_tptv.aspx" '查詢數據會自動產生於此網址頁面

Do Until .ReadyState = 4
DoEvents
Loop

.document.forms(0).all("ctl00_btnDownload").Click '點選下載按鈕

'點選下載按鈕後,網頁會彈出下載檔案視窗,詢問"開啟舊檔"、"儲存"、"取消"選項
'希望能自動儲存至同資料夾並保持原檔名.csv檔(下載檔案為.csv檔)
'請問以上這段程式碼該怎麼寫呢?


End With
End Sub

*宅女一枚無誤*

回復 1# msmplay
如圖IE上移動滑鼠到CSV下載的位置,可看到檔案的網址

  1. Option Explicit
  2. Const FileName = "d:\mycsv.csv" '存檔位置錄,可自行修改
  3. Const URL = "http://www.twse.com.tw/exchangeReport/STOCK_DAY?response=csv&date=20180101&stockNo=2303"
  4. Sub Ex_存檔一()
  5.     Application.DisplayAlerts = False
  6.     With Workbooks.Open(URL)
  7.         .SaveAs FileName
  8.         .Close
  9.     End With
  10.     Application.DisplayAlerts = True
  11. End Sub
  12. Sub Ex_存檔二()
  13.     Dim Xmlhttp As Object
  14.     Set Xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
  15.     With Xmlhttp
  16.         .Open "POST", URL, False
  17.         .Send
  18.     End With
  19.     With CreateObject("ADODB.Stream")
  20.         .Type = 1
  21.         .Open
  22.         .write Xmlhttp.ResponseBody
  23.         If Dir(FileName) <> "" Then Kill FileName '相同名稱的檔案存在會有錯誤
  24.         .SaveToFile FileName
  25.     .Close
  26.     End With
  27. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

use win api

TOP

回復 2# GBKEE


   G大~~~測試已成功,非常感謝熱心幫忙~~~~~~~~
*宅女一枚無誤*

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題