是否能使用VBA 將 檔案名稱名稱 不同的CSV 匯入同一個
是否能使用VBA 將 檔案名稱名稱 不同的CSV 匯入同一個 EXCEL的SHEET中
(將一年的資料存在一個SHHEET)
1.因為是股市的開盤日 所以CSV檔名以日期命名 所以會跳過星期六 日(所以日期不會連續)
EX
D.20140611.csv
D.20140612.csv
D.20140613.csv
D.20140616.csv (格式會跳過星期六日 與假日)
2.有8000多筆
3.請高手幫我一下 告知我VBA 寫法
4.有些日期內容有代碼 但是沒有資料(當天沒有成交 或是股票還沒上市)
格式如下
----------------------------------------------------------
代碼名稱日期 開 高低 收 高跌停 量 低漲停 融資 融券 券資比 股本
1101台 泥2014061644.8545.0544.744.75.F.5936.F.69082613.78369.22
1102亞 泥2014061636.939.7536.939.5.F.6230.F.18301166.34329.55
1 個解答
- 7 年前最佳解答
不太懂您的意思,就字面上簡單來說
您需要的應該是
會有所有的股價代號
然後利用股價代號去反查這些股票的歷史價格對吧?
如果是我上述說的話
首先您需要一個工作表用來儲存股票代號
利用迴圈的方式ex:
dim a,i as Integer
a=1
i=2
while a <> 0
if worksheets("Sheet1").Range("A"& i)<>empty then
Worksheets("Sheet1").Range("A" & i).Select
Selection.Copy
Worksheets("Sheet2").Select
Worksheets("Sheet2").Range("A1").Select
ActiveSheet.Paste
以上呢,是把工作表1"A" i 的代號放在 工作表二的A1當中
隨著您工作表1的欄位的不同就能存放不同的代號
ex:A1=1101,A2=1102 ,i就是迴圈變數可以一直新增下去
第二步驟
您有了股票代號,就可以去查他的歷史股價
http://blog.xuite.net/wang_2330/wretch/134694588
此網址裡面左邊有一個簡單利用excel下載歷史股價
基本上呢就照著貼就差不多了~
只不過我會先新增一個欄位叫做Number ,這個欄為是用來存放股價代號的
不過在那之前,您必須先把您的股票市場做分割(上市為.tw上櫃為.two)
第三步驟
建立股價資料庫
根據上述兩步可以知道第一個工作表為股票迴圈,第二個工作表開始是存放個股票的資料庫
那麼第三步驟就是依照您說的將每支股票放在不同的工作表上面,也就是新增一隻股票,就會多一個工作表
那麼程式碼如下
Set bb = Worksheets.Add
Worksheets(i).Name =worksheets("Sheet1").Range("A"& i)
整理一下您的步驟為
1.找出所有您要的股票代號代碼並給予市場分割
2.利用i迴圈複製代碼並建立資料表,並以股票代號做為命名
3.將新的資料表A1(股票代號)、A2(開始時間)、A3(結束時間)、A4(市場)給予參數,A1、A4的參數來自於工作表1的代號與市場
4.利用上述網址下載歷史股票
最後呢 在給他一個 endif 、 wend結束判斷與迴圈結束,資料庫建立就大功告成了~
但市上述網址並沒有 融資、融券、券資比、股本大小
因為不能打太多,也部知道您到底是想要如何製作您的excel,因此大略告訴您方法,很多種可以變通,因此就沒有附上程式碼,若有問題可再提問
2014-06-30 05:21:01 補充:
可以邊做邊用F8檢視一下,其實並不難,只要您有一點點的程式基礎,撰寫很容易的
至於您上面說的csv是指當日股票會跳過假日,並非每日csv? 若是純粹的歷史股價跳過假日,那麼上述網址的確做的到~若您真的非常想要資券比也加入的話
那麼您必須在巨集裡面寫上另一個功能,匯入外部網站資料
http://goodinfo.tw/StockInfo/ShowBearishChart.asp?...
然後選取您要的表格,匯入到excel即可
2014-06-30 05:24:55 補充:
上述網站的ID=1101,您只要指定成工作表1的代號變動,1101也跟著變動
例如
"URL;http://goodinfo.tw/StockInfo/ShowBearishChart.asp?... & Worksheets("Sheet1").Range("A" & i).Value & "&CHT_CAT=DATE
", Destination:=Worksheets("1101").Range( _
"C1"))
參考資料: 我、http://blog.xuite.net/wang_2330/wretch/134694588, 我, 我