1. 附件是244F股權分散表的程式碼,我已將[分身]取消,並用686F的網址做了更新,可是會在Set all_date = HTMLsourcecode.getElementbyid("scaDates")發生錯誤,想請您幫我看一下,是不是改的不正確。
2. 另外,想請教With GetXml 和 With CreateObject("WinHttp.WinHttpRequest.5.1")的差異,我看程式碼中,前者最後要釋放,後者是不是會自動釋放。謝謝
[點擊下載]
Dylan67 wrote:
請教版主:
1. 附件是244F股權分散表的程式碼,我已將[分身]取消,並用686F的網址做了更新,可是會在Set all_date = HTMLsourcecode.getElementbyid("scaDates")發生錯誤,想請您幫我看一下,是不是改的不正確。
改版很久了,從table改成json
下載日期,請參考686樓=>Update_TDCC_day 副程式
Dylan67 wrote:
2. 另外,想請教With GetXml 和 With CreateObject("WinHttp.WinHttpRequest.5.1")的差異,我看程式碼中,前者最後要釋放,後者是不是會自動釋放。謝謝
程式結束後,2種都會自動釋放
大型程式用set abc=CreateObject() 或 set abc=new object,這種方式比較好
可隨時手動釋放物件,增加記憶體空間、程式效率
幾百行那種小程式就不必太在意這個問題
https://docs.microsoft.com/zh-tw/office/vba/language/concepts/getting-started/creating-object-variables
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/set-statement
https://docs.microsoft.com/zh-tw/previous-versions/office/troubleshoot/office-developer/binding-type-available-to-automation-clients
Dylan67 wrote:
可是這段代碼會告訴我日期語法錯誤
就如misser所說的,日期搞錯了,9月沒31號,日期錯了,就會出現語法錯誤
簡單範例請參考
(含access範例檔,除息日欄位為“日期格式”,如為文字格式sql是另一種寫法)
Sub access_test()
Dim DB As Object, RS As Object, Rsql As String
Set DB = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")
DB.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\test.accdb" & ";"
With Sheets("工作表1")
.Cells.Clear
Rsql = "SELECT * FROM 配息表 where 除息日>=#2020/1/6# and 除息日<=#2020/1/15#"
'Rsql = "SELECT count(商品) FROM 配息表 WHERE 除息日<= #2020/1/12#"
'Rsql = "SELECT count(商品) FROM 配息表 WHERE 除息日>= #2020/1/8# and 除息日<=#2020/1/14#"
RS.Open Rsql, DB, 3, 3
'Debug.Print RS.RecordCount
If RS.RecordCount <> 0 Then
.Cells(2, 1).CopyFromRecordset RS
End If
End With
RS.Close
DB.Close
Set RS = Nothing
Set DB = Nothing
End Sub
[點擊下載]
我在學習資料庫又遇到新的問題了,由於股票會有上市及下市的問題,想請教,
怎麼引用Excel的[代碼表],比方多了代碼(上市),或少了代碼(下市),
1.新建及刪除Access的資料表(我的程式碼只能新建1次)
2.修改Access的[代碼清單]資料表的內容(我設了不重複主鍵)
感謝
[點擊下載]
Dylan67 wrote:
1.新建及刪除Access的資料表(我的程式碼只能新建1次)
2.修改Access的[代碼清單]資料表的內容(我設了不重複主鍵)
詳細sql語法,請google
建立表格
google create table sql
新增表格內資料
google INSERT INTO sql
或參考acer範例中,Get_Online_Data() 副程式
更新資料表
google UPDATE access sql
(使用 Access SQL 插入、更新及刪除資料表中的記錄)
https://docs.microsoft.com/zh-tw/office/vba/access/concepts/structured-query-language/insert-update-and-delete-records-from-a-table-using-access-sql
Sub test()
Dim DB As Object
Set DB = CreateObject("ADODB.Connection")
DB.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\test.accdb" & ";"
'增加 table
DB.Execute "CREATE TABLE " & "2002" & "(識別碼 int IDENTITY(1,1) PRIMARY KEY," & "日期 text(8),持股 text(25))"
'DB.Execute "CREATE TABLE " & "2412" & "(識別碼 int IDENTITY(1,1) PRIMARY KEY," & "日期 text(8),持股 text(25))"
'刪除 table
DB.Execute "DROP TABLE 2002"
'DB.Execute "DROP TABLE 2412"
DB.Close
Set DB = Nothing
End Sub
關閉廣告