2016年10月26日 星期三

Excel VBA 下拉清單

Reference:
https://msdn.microsoft.com/zh-tw/library/office/ff835840.aspx
http://forum.twbts.com/thread-3516-1-1.html


1. 選擇 開發人員
2. 插入 下拉清單
3. 點選 下拉清單
4. 輸入 下拉清單名稱,按 Enter 確定
5. 按 Alt + F11 開啟 VBA 編輯畫面
6. 輸入 VBA 程式

Sub tt()
    Sheet1.Shapes("mon_1").ControlFormat.RemoveAllItems     '清除所有下拉選項
    Sheet1.Shapes("mon_1").ControlFormat.AddItem ("111")    '新增一筆下拉選項
    Sheet1.Shapes("mon_1").ControlFormat.AddItem ("aaa")    '新增一筆下拉選項
    Sheet1.Shapes("mon_1").ControlFormat.AddItem ("xxx")    '新增一筆下拉選項
    Sheet1.Shapes("mon_1").ControlFormat.Value = 2          '將下拉選單設定預設值為第二筆
    MsgBox (Sheet1.Shapes("mon_1").ControlFormat.List(2))   '顯示第二筆選單的值
End Sub

2016年10月14日 星期五

VBA to get web asp result

Reference:
Excel VBA 2a:Learning MSXML2.XMLHTTP
Scraping a website's HTML in VBA
XmlHttp Post in Excel VBA not updating website form

Example:
use VBA to download 台灣期貨交易所的台股期貨
http://www.taifex.com.tw/chinese/3/3_1_2.asp

VBA code:
Sub get_taifex()
    Dim pXmlHttp As Object
    Set pXmlHttp = CreateObject("MSXML2.XMLHTTP")
    pXmlHttp.Open "POST", "http://www.taifex.com.tw/chinese/3/3_1_2dl.asp", False
    pXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    pXmlHttp.send ("goday=&DATA_DATE=&DATA_DATE1=&DATA_DATE_Y=&DATA_DATE_M=&DATA_DATE_D=&DATA_DATE_Y1=&DATA_DATE_M1=&DATA_DATE_D1=&syear=&smonth=&sday=&syear1=&smonth1=&sday1=&datestart=2016%2F09%2F14&dateend=2016%2F10%2F14&COMMODITY_ID=TX&commodity_id2t=&his_year=2015")
   
    MsgBox pXmlHttp.ResponseText
End Sub

用 Wireshark 收集到的網頁傳輸參數