Board logo

標題: [發問] 可以下載,讀取有問題 [打印本頁]

作者: HSIEN6001    時間: 2012-8-2 22:26     標題: 可以下載,讀取有問題

本帖最後由 HSIEN6001 於 2012-8-2 22:27 編輯

麻煩版上先進幫我看看
語法內,到底哪裡要修改
下載的文件,才能正常開啟
感恩!
作者: c_c_lai    時間: 2012-8-2 22:45

本帖最後由 c_c_lai 於 2012-8-2 22:47 編輯

回復 1# HSIEN6001
[attach]11999[/attach]
執行完後,它會在 D:\ 產生一個 0050.xls 檔。
作者: HSIEN6001    時間: 2012-8-2 22:57

回復 2# c_c_lai


    我知道,
但不清楚語法對應問題 (下錯語法)
出現的bug , 才讓開啟不正常

所以請先進幫我看看哪裡要修改
粗線條~~有些多餘語法忘了刪
附上!新修訂
[attach]12000[/attach]
作者: lalalada    時間: 2012-8-2 23:08

我好像曾經碰過這個問題..
可是我權限不夠下載看不到原始碼 囧"
原PO是用插入查詢表的嗎?
是的話調整一下插入的格式或許可以改善
作者: HSIEN6001    時間: 2012-8-2 23:12

回復 4# lalalada


    老大,我覺得你欠我一個Fiddler轉文字編碼的教學喔!
作者: HSIEN6001    時間: 2012-8-2 23:16

接收回應:
responseText:將返回消息作為文本字串
responseBody:將返回消息作為HTML文檔內容
responseXML:將返回消息視為XML文檔,在伺服器回應消息中含有XML資料時使用
responseStream:將返回消息視為Stream物件

爬文很久,還沒法好好理解貫通這些對應
可能是這個才讓開啟出現錯誤

仍愚鈍,找不出要怎麼改
麻煩先進開示!∼謝謝!
作者: lalalada    時間: 2012-8-2 23:16

回復 5# HSIEN6001


   啊 我剛剛才注意到有短消息
   然後我沒有權限回= =
   然後我看過那個BLOG但是我不是主人XD
   我現在得出門 等一下回你 ~
作者: HSIEN6001    時間: 2012-8-2 23:26

回復 7# lalalada

那原始碼就是搞不出來~~~~粉殘念!!
拜託您行行好;教一下外行
卻很努力學習的我<----(噁心)

拜託!拜託!~^o^~
作者: diabo    時間: 2012-8-2 23:31

回復 6# HSIEN6001

你查的目標網址是 HTML ,ADODB.Stream 存檔當然也必須是HTML
將 0050.xls 改為 0050.htm 就可以打開了....

修改 .SaveToFile (path & "0050" & ".htm")
作者: HSIEN6001    時間: 2012-8-2 23:52

回復 9# diabo


    謝謝回覆!
我希望的是下載為.xls 格式 或 .csv格式
所以我應該要修改哪裡才OK?!
作者: diabo    時間: 2012-8-3 00:10

回復 10# HSIEN6001

土方法,下載後用 Excel 開啟  HTM 另存新檔 XLS

  1. Application.DisplayAlerts = False
  2. Workbooks.Open Filename:="D:\0050.htm"
  3. ActiveWorkbook.SaveAs Filename:="D:\0050.xls", FileFormat:=xlNormal
  4. ActiveWorkbook.Close True
  5. Application.DisplayAlerts = True
複製代碼

作者: lalalada    時間: 2012-8-3 00:57

回復 8# HSIEN6001

我也覺得你滿認真的XD
所以會很願意一起交流:p
你有EMAIL或其他聯絡方式嗎?
這樣比較方便~也可以傳檔案(對論壇來說太大了...)
因為我權限好像很低
一小時只能回三篇而且不能傳短消息...(所以到現在才回)
然後我也是新手  之前也沒有其他程式背景
VBA寫到現在不滿3個禮拜喔^.<
作者: HSIEN6001    時間: 2012-8-3 08:22

回復 11# diabo


    大大~真的可以
但是可以放在迴圈內做完?!

因為看不懂 Application.DisplayAlerts = False 查找了一會兒資料
希望於下載的迴圈直接完成,不用再次Workbooks.Open
及  ActiveWorkbook.SaveAs
這個地方,我也想繼續Try
作者: c_c_lai    時間: 2012-8-3 09:01

回復 13# HSIEN6001
試試看!
[attach]12008[/attach]
作者: HSIEN6001    時間: 2012-8-3 09:42

回復 14# c_c_lai

    謝謝!
這個    Kill "D:\0050.htm"~~我知道

我只是想.....如果可能
應該直接抓回.xls 或者 .csv
盡量減去不必要的程序

近來心得:
學習中,要不斷修正自己的程序中的 [包袱]
以前---->可以跑,我就滿足了。
現---->哇eo4! 我給牠那麼累贅;還因為可以下載;自鳴得意些啥呀!
.........對不起自己ing

^^
如果學習中,那些看不過去的語法
傷了許多大大的眼睛
請海涵 & 不吝嗇--->用力糾正我
謝謝!
作者: lalalada    時間: 2012-8-3 09:50

回復 15# HSIEN6001

原PO謙虛了~
看語法會發現是學習嚴謹的人(我都亂寫....QQ)
根據之前實驗結果,SaveAs那邊是可以指定直接存成csv檔的
然後再用open打開尋找原始碼
作者: lalalada    時間: 2012-8-3 09:59

回復 15# HSIEN6001

喔對了
我有寄信到你的信箱 請參考
想問一下下載下來之後的檔案有多大呢?
是否有辦法能縮減檔案大小....
作者: HSIEN6001    時間: 2012-8-3 10:10

回復 16# lalalada

那個方式改.csv檔   打開你會發現資料內容不對喔!
作者: HSIEN6001    時間: 2012-8-3 17:08

回復 11# diabo


    感謝大大分享這塊
測試結果,還是獨立出來整理--->真的比較好
才不用掛載那麼久

謝謝!
作者: devidlin    時間: 2012-8-4 10:48

回復 14# c_c_lai


    你好,為何打開TEST檔案後都沒有資料。
作者: HSIEN6001    時間: 2012-8-4 11:01

回復 20# devidlin


    主要是學看巨集編輯方式,不是整隻奉送,有點抱歉!
學習之路~~一起加油囉!
作者: c_c_lai    時間: 2012-8-4 11:40

回復 20# devidlin
請打開開發人員->Visaul Basic 你就看得到程式執行內容了!
作者: HSIEN6001    時間: 2012-8-5 12:28

說真的~W大很希望刺激我出來說明
只好跳出來PO一下自己的統計---->以示清白
不是來競技,也不是踢(W大的帖);更不希望有人在此拼命踢館--->(傷眼)
深知自己的下載有空間改進;所以拼命學習改進
而不是為了挑毛病 or 表現自己

為免喋喋不休
PO在自己的發問裡好了
希望就此打住!
[attach]12023[/attach]
作者: HSIEN6001    時間: 2012-8-5 12:38

不好意思! ~~學習都在網路上得來的
所以,常保感恩心 & 謙卑的心情
一切都在學習中

[attach]12024[/attach]
作者: lalalada    時間: 2012-8-5 15:51

回復 24# HSIEN6001

咦 這是你下載下來的交易明細嗎
原來0050之類的也有 沒注意到
我也來試過用htm下載
只是不知道怎麼處理他...
作者: lalalada    時間: 2012-8-5 16:10

回復 24# HSIEN6001

你好~
請問你#24 po的那個(券市商xxx)的資料內容資料內容就是#23的貼圖嗎
所以是根據每天下載下來的交易明細進行整理?
可以說一下是怎麼做的嗎?
如果對每一支股票全部整理的話會耗時很久吧?
我目前只能針對有興趣的股票整理 因為太花時間...所以想請問一下做法
作者: HSIEN6001    時間: 2012-8-5 17:09

本帖最後由 HSIEN6001 於 2012-8-5 17:10 編輯

回復 26# lalalada


無論是xls 或 htm ,格式雖然沒有在相同點
同樣可處理,就是指定給它統計的欄位而已
全部整理統計沒正確看時間捏! (30分?!)
若應用VBA,相信會更快

先前討論位置,留給看倌們自行參考:
http://forum.twbts.com/thread-6451-1-1.html
http://forum.twbts.com/thread-6349-1-1.html
作者: HSIEN6001    時間: 2012-8-9 11:11

分享前,首先謝謝 diabo 大解惑,才能繼續這不同的思路

如先前 [券商買賣日報明細] 下載之延伸題:

若下載回來的是htm格式
可以試試這個轉檔xls
小的一直在學習中,拙劣的東西 或 卑微的思路
就僅供大家~~參考!參考!
~別見笑^_^!!

因為上載有1MB限制
故挑選幾家特別的股票代號,以供測試
[attach]12072[/attach]
作者: HSIEN6001    時間: 2012-8-9 12:42

回復 28# HSIEN6001

如上
'代號與名稱拆解,視個人需求;此段可省
Dim i%, strn$, Rng As Range
    Application.ScreenUpdating = False
    Set Rng = Range("F3")
            For i = 1 To Len(Rng)
                strn = Mid(Rng, i, 1)
                If Not IsNumeric(strn) Then
                    Rng.Offset(0, 1) = "'" & Mid(Rng, 1, i - 1)
                    Rng.Offset(0, 2) = Mid(Rng, i)
                    Exit For
                End If
            Next i
    Application.ScreenUpdating = True
   
'代號與名稱拆解,這段語法也可參考GBKEE的Code
    Dim i%, Rng As Range
    Application.ScreenUpdating = False
    Set Rng = Range("F3")
    Do
        For i = 1 To Len(Rng)
            If Not IsNumeric(Mid(Rng, i, 1)) Then
                Rng.Offset(0, 1) = "'" & Mid(Rng, 1, i - 1)
                Rng.Offset(0, 2) = Mid(Rng, i)
                Exit For
            End If
        Next i
            Set Rng = Rng.Offset(1)
    Loop Until Rng = ""
    Application.ScreenUpdating = True
作者: lalalada    時間: 2012-8-9 15:53

回復 29# HSIEN6001

感恩!
目前正在修改程式碼中
等等就可以實驗了^_^
作者: lalalada    時間: 2012-8-9 17:37

大成功!!
感謝你
這速度真是太讓人滿意了~
另外給個不重要小建議
如果在下載前多加一個判斷頁數是否為空字串
即可避免下載到無資料htm
事後也就不必處理
大概可以多省個幾行=~="
作者: HSIEN6001    時間: 2012-8-9 17:43

回復 31# lalalada


    不錯!有禮貌的孩子~乖~
懂的提醒我~

但是!!
語法給出來~~不知道我很菜?!

^皿^
作者: lalalada    時間: 2012-8-9 17:46

XD
不就
If Page <> "" then 迴圈
@@?
作者: HSIEN6001    時間: 2012-8-10 09:28

本帖最後由 HSIEN6001 於 2012-8-10 09:30 編輯

回復 31# lalalada

    我自己的應用是,不必調格式
全部交給Access處理格式問題

所以加上你建議的篩選沒交易的不用下載之後
就只需要這段,會更快

所以省下的掛載時間 ;加上轉檔時間
(轉檔在自己的電腦裡處裡,起碼沒掛在網路上,增加IP曝光危險性)
嗯!!!在還沒有CSV可下載之前,還算滿意!
  1. Sub ChangHtmToXls()     'htm改xls
  2. Dim F As String, path As String, file As String
  3. path = "D:\htm\"    '檔案存放的位置
  4. file = Dir(path & "券商市*.htm")
  5. Do While file <> ""
  6. Application.DisplayAlerts = False
  7.     With Workbooks.Open(path & file)
  8.     .SaveAs Filename:=path & Replace(file, ".htm", ".xls"), FileFormat:=xlNormal
  9.     ActiveWorkbook.Close True
  10. Application.DisplayAlerts = True
  11.         End With
  12.         file = Dir
  13. Loop
  14. Kill "D:\htm\*.htm"        '下載完,轉檔後再一起刪  *.hml  (比較省時)
  15. End Sub
複製代碼
其實,稍稍回顧之後,才發現
http://forum.twbts.com/viewthrea ... p;extra=&page=2
#11 樓的大大,也曾提過這個快速 [達到] 取資料的目的
只是大家對格式的問題所困擾,而沒繼續這方面的應用

所以,三人行,必有我師~~~謝謝恩師們!
藉由討論中出現的問題,各自達到成長目的
這才是論壇的目的

~感恩~




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