(不定期更新)使用VBA解決 excel web 查詢無法匯入、匯入太慢的股市資料


snare wrote:
因為範例都是寫好玩...(恕刪)


謝謝 Snare大大 的分享^^
在下有先下載來看了一下內容,發覺其中有幾個應用方面蠻有趣的,
等後面比較有時間再來仔細研究看看全部內容。

akirachin wrote:
核對了網上的資料,合併年報及合併季報
內容和網站相同....(恕刪)


yuehmao wrote:
在下有先下載來看了一下內容...(恕刪)


有排版功能的完整版以補上,請回149樓下載…

日期部份,測試後發現跟網站連動,不是理想作法,會浪費查詢時間
超出範圍時,網站會回傳查無資料,或最近一季、年的資料
所以維持原狀就好

bioleon69 wrote:
如果是用拉的
應該要怎麼加入
.Parent.Select 這行?
...(恕刪)


要先找出名稱

有表單、activex 2種控制項


activex 按下設計模式,就可以看到


表單 ,在控制項上,按滑鼠右鍵,就可以看到


Sub test()
With Sheets("sheet1").ComboBox1
.Parent.Select
End With
With Sheets("sheet1").Shapes("下拉清單 2")
.Parent.Select
End With
End Sub

snare wrote:
要先找出名稱有表單、...(恕刪)


流程如下↓
-----------------
程式碼共三處
-----------------
(1)sheet1 的按鈕
(把表單叫出來)=bottom1

(2).表單
表單裡面的按鈕
(呼叫兩個程式)=CommandButton1_Click

(3).模組
兩個程式
#刪除/新增工作表程式=adsh
#寫入資料=getpost


目前我在(1)
sheet1加入了

Sub 啟動表單()
With Sheets("sheet1").Shapes("bottom1")
.Parent.Select
End With
UserForm1.Show
End Sub

也是照師傅的教學,可是卻沒有效果
不曉得我是哪裡錯了?謝謝

附加壓縮檔: 201706/mobile01-9600eb781b310930ea803b3a31d91d62.zip
bioleon69 wrote:
可是卻沒有效果
不曉得我是哪裡錯了?
...(恕刪)


沒做錯,只是對 excel 2013 沒效
問題出在刪除、新增工作表,就算刪掉getpost
一樣會當住,只要不 call adsh ,程式就完全沒問題

我也是裝上excel 2013試用版後,才試出和您一樣的問題,應該算是bug

100% 確定可解決方式 for Excel 2013
一、改
Private Sub CommandButton1_Click()

Call ADSH
'順便改
Call getpost(UserForm1.TextBox1, UserForm1.TextBox2, UserForm1.TextBox3)
'一定要加
Application.OnTime Now + TimeValue("00:00:01"), "button_click"
'一定要加
Unload Me

End Sub

二、順便改
Sub getpost(year_a, smonth, emonth)

三、順便刪
year_a = UserForm1.TextBox1
smonth = UserForm1.TextBox2
emonth = UserForm1.TextBox3

四、必需增加
Sub button_click()
With Sheets("三法")
.Visible = True
.Activate
End With
End Sub

五、順便改
sheets("三法").Cells.ClearContents
改成
sheets("三法").Cells.Clear
可完整清除工作表內容


建議您“三法”工作表,如果不想看到就用“隱藏”,要用時再“顯現”就好
如果要很多人用,相容性比較重要
sheets("三法").visible=true
sheets("三法").visible=false

snare wrote:
有排版功能的完整版...(恕刪)


謝謝 snare大大 告知^^
在下已經重抓完整版的了.
研究之後,若有疑問再來向您請教。
snare wrote:
沒做錯,只是對 ex...(恕刪)

謝謝師傅
解決了!

看起來最關鍵的東西是
Application.OnTime Now + TimeValue("00:00:01"), "button_click"

sub button_click
...
..
end sub
這兩個東西...

我相信師傅的日常
應該是跟程式拖不了關係厚..
這個邏輯上的創造力
怎麼可能vba只是隨便玩玩...= =

-----------------
snare wrote:
問題出在刪除、新增工作表,就算刪掉getpost
一樣會當住,只要不 call adsh ,程式就完全沒問題

snare wrote:
建議您“三法”工作表,如果不想看到就用“隱藏”,要用時再“顯現”就好
如果要很多人用,相容性比較重要


謝謝師傅告知
相容性倒是點醒了小弟
弟子擇日,可能要重新練習編寫了

-----------------
沒想到Application.OnTime後面加個逗點還能執行sub
還有
Unload Me也學起來了...
(我本身是用hide)
雖然不知道有什麼差,先照師傅的寫法就對了
看起來也比較專業...
-----------------

snare wrote:
'順便改
Call getpost(UserForm1.TextBox1, UserForm1.TextBox2, UserForm1.TextBox3)


snare wrote:
Sub getpost(year_a, smonth, emonth)


不太了解師傅這個動作的思維是什麼
沒有改似乎也是能執行


感謝師傅的一一指點
要學習的還是太多了
謝謝!
bioleon69 wrote:
Call getpost(UserForm1.TextBox1, UserForm1.TextBox2, UserForm1.TextBox3)

Sub getpost(year_a, smonth, emonth)

不太了解師傅這個動作的思維是什麼
沒有改似乎也是能執行...(恕刪)


很單純就是傳遞變數而己,可簡化程式碼

另外75樓的範例,我另外用一個產生隨機資料的副程式來執行範例
試了600個不同股票代碼,每次日期都隨機產生,完全沒任何錯誤產生
很確定沒任何問題

可以用 yuehmao 在88樓修改好的75範例,修改到相當完美了
他的排版比較好看,輸入方式也有做一些限制、除錯
感謝師父分享!!
-----------------------

雖然是一個很雞肋的東西...
還是想問一下...XD


等待時間

Application.Wait (Now + TimeValue("00:00:01"))

如果我想讓程式已10毫秒的速度寫入
目前要等1秒,太久了..
(畫面會有一筆一筆寫入的動作,1秒又太久了)
應該要怎麼修改, 我00:00:00:01 會出現錯誤
XDD感謝!!
bioleon69 wrote:
Application.Wait (Now + TimeValue("00:00:01"))

如果我想讓程式已10毫秒的速度寫入
目前要等1秒,太久了..
(畫面會有一筆一筆寫入的動作,1秒又太久了)
...(恕刪)

一、
155樓,解決EXCEL 2013卡住的副程式中,沒有寫入動作
二、
我的getpost範例,只有全部一次寫入
三、
Application.Wait 是等1秒執行“其它”副程式
不是讓“正在執行”的副程式等1秒後再執行下一行程式碼

造成這個問題的原因,應該是您自行加上的程式碼
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 157)

今日熱門文章 網友點擊推薦!