Lấy dữ liệu cổ phiếu từ Website Cafef.vn về Excel

Liên hệ QC
Nếu dùng API của Google thì có hết từ lâu lắm rồi mà.

Còn dùng OAuth thì phải hết sức cẩn thận với đám mây, cái này phải có ràng buộc trách nhiệm nghiêm ngặt, và không ai làm như ai đó (có một nhược điểm chí mạng và buồn cười). Lần này thì mặc kệ nó. =]]]

Mà hài nhất là khúc đẩy dữ liệu phải chọn Range trước. :D
Rất rõ ràng mạch lạc là

nếu sử dụng các dịch vụ của Google thì User của mình chỉ cần mở trình duyệt lên xong đăng nhập với các thông tin xx

xong đọc và ghi dữ liệu ... còn uỷ quyền làm chi nữa nguy cơ tào lao cao ai mà biết ... còn ko biết hàm đọc và ghi thì mới cần bên thứ 3

Nếu biết rồi thì cũng dep cho sạch
 
Một điều em quan tâm là spreadsheet chia sẻ không phải everyone, và ấy địa chỉ như sheet “ban hàng” vùng A10:H1000 thì thế nào?
Hehe… cách lấy thông thường của tôi chỉ lấy từ cái sheet phải chuẩn dòng đầu tiêu đề, không có thiết kế lung tung thì mới lấy được. Còn không chia sẻ, có range nằm vị trí bất kỳ là bó tay…hehe. Khó quá nên không ngâm cứu vụ này.
 
Nếu dùng API của Google thì có hết từ lâu lắm rồi mà.

Còn dùng OAuth thì phải hết sức cẩn thận với đám mây, cái này phải có ràng buộc trách nhiệm nghiêm ngặt, và không ai làm như ai đó (có một nhược điểm chí mạng và buồn cười). Lần này thì mặc kệ nó. =]]]

Mà hài nhất là khúc đẩy dữ liệu phải chọn Range trước. :D

Phải chọn vùng mới đẩy được dữ liệu á? Cờ líp đâu bác. Nếu không dùng OAuth mà truy cập được vào dữ liệu private trên Google sheet thì hoá ra hack được google à. Hay lại có chuyện buồn cười rũ rượi nữa đây?
Bài đã được tự động gộp:

Rất rõ ràng mạch lạc là

nếu sử dụng các dịch vụ của Google thì User của mình chỉ cần mở trình duyệt lên xong đăng nhập với các thông tin xx

xong đọc và ghi dữ liệu ... còn uỷ quyền làm chi nữa nguy cơ tào lao cao ai mà biết ... còn ko biết hàm đọc và ghi thì mới cần bên thứ 3

Nếu biết rồi thì cũng dep cho sạch

Bác càng phán càng thấy tào lao quá. Hãy làm với đư liệu private với link của user nào đó không phải của mình đi.
 
Phải chọn vùng mới đẩy được dữ liệu á? Cờ líp đâu bác. Nếu không dùng OAuth mà truy cập được vào dữ liệu private trên Google sheet thì hoá ra hack được google à. Hay lại có chuyện buồn cười rũ rượi nữa đây?
chủ đề này bàn chuyện chuyện Môn code két he ... mọi cái tôn trọng nhau chút chơi cho vui vẻ

Còn muốn acvbs vui lòng tạo thớt mới mà bàn .... trên này ai sao Tôi biết Sạch có điều nói hay không nói

... và muốn trao đổi trên tinh thần code két thì trao .. còn không thì thôi ... bớt bớt lại chút đi cho lành
 
Nếu sử dụng JSON thì liên quan cái hàm chuyển JSON trên VBA của tây có khoãng trên 1000 dòng code ... dẹp nó đi cho gọn

chuyển qua CSV chỉ vài dòng code

Mượn link của Hướng GPE thử code thay thế hàm SendHttpRequest ... là hàm chi của ai đó tuỳ thích

Mã:
Sub GetDataFromGoogleSheet_CSV2()
    Dim csvData As String
    Dim lines As Variant
    Dim line As Variant
    Dim values As Variant
    Dim cleanedValue As String
    Dim I As Long
    Dim J As Long

    ' Gi? s? csvData ch?a d? li?u CSV t? hàm SendHttpRequest
    csvData = SendHttpRequest("GET", "https://docs.google.com/spreadsheets/d/1-0nB16Fefr8cTbEV7Gj5VjcegL5GcfMIc4RP5C9Sn4w/gviz/tq?tqx=out:csv", "text/csv", "text/csv", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0", Null)
    Debug.Print csvData

    ' Tách d? li?u thành t?ng dòng
    lines = Split(csvData, vbLf)
  
    Cells.ClearContents

    ' Duy?t t?ng dòng d? l?y giá tr?
    For I = LBound(lines) To UBound(lines)
        ' Tách t?ng dòng thành các giá tr?
        values = Split(lines(I), ",")

        ' Luu giá tr? vào b?ng tính (thay Sheet1 b?ng tên c?a trang tính c?a b?n)
        For J = LBound(values) To UBound(values)
            ' Lo?i b? các d?u "" th?a
            cleanedValue = Replace(values(J), """", "")
            Sheets("Sheet2").Cells(I + 1, J + 1).Value = Trim(cleanedValue)
        Next J
    Next I

    'MsgBox "D? li?u dã du?c luu vào b?ng tính!"
End Sub
Không cần API Key nữa à?
 
chủ đề này bàn chuyện chuyện Môn code két he ... mọi cái tôn trọng nhau chút chơi cho vui vẻ

Còn muốn acvbs vui lòng tạo thớt mới mà bàn .... trên này ai sao Tôi biết Sạch có điều nói hay không nói


... và muốn trao đổi trên tinh thần code két thì trao .. còn không thì thôi ... bớt bớt lại chút đi cho lành

Ah, mình chủ tò mò cái mà mình chưa làm được như mọi người nói và đang muốn được khai sáng để học hỏi thêm thôi. Chờ chút mình gửi link nhờ bác và ai đó làm thử coi sao nhé.
 
Sao bạn viết bài #20 với code bài #26 mâu thuẫn nhau vậy??? :p
bởi vì duyệt tìm kiếm quá nhiều cung đoạn và chi phí mất thời gian xử lý dữ liệu nên tôi tạm keo vậy
có lẻ không quan trọng lắm nên không quan tâm các bài đó đó
 
bởi vì duyệt tìm kiếm quá nhiều cung đoạn và chi phí mất thời gian xử lý dữ liệu nên tôi tạm keo vậy
có lẻ không quan trọng lắm nên không quan tâm các bài đó đó
Nếu vậy thì hoá ra cái thư viện Beautifull Soup (parse HTML và XML) hay ho của thằng Python được viết ra chỉ để xử lý RÁC thôi. Python dùng nó để cào dữ liệu web cũng chỉ là RÁC, cùng đường thôi…haha…giờ tôi mới biết luôn.
 
rảnh chơi game trí tuệ và có ích thôi mà ... Tôi mới nâng cấp hàm GoogleSheetAsRecordset thành hàm mở rộng là GoogleSheetAsRecordsetEx

áp dụng cho các máy đời cao CPU + RAM nhiều chạy đa luồng song song thì 1000 dòng Google Sheet nó cũng nhẹ lắm

hên thế nhờ thớt bên kia mà hiểu nguyên lý đa luồng song song --=0

Mã:
Declare PtrSafe Function GoogleSheetAsRecordsetEx Lib "GoogleSheets64.dll" _
            (ByRef SheetId As Variant, _
             ByRef APIKey As Variant, _
             ByRef SheetName As Variant, _
             Optional ByVal ThreadCount As LongPtr = 0) As Variant

ThreadCount mặc định là 0 ... nếu máy tốt thì cho nó vào 20 là 20 luồng vậy ... xem ra hàm này không đụng hàng của ai đó
vậy là có hai hàm cũng song song cùng một mục đích lấy dữ liệu Google Sheet trả về ADODB Recordset với các phương thức, thực tính của nó sử dụng thuần ADODB trên Windows
 
Mới thử 999 dòng bỏ lại 1 dòng mà sao nó nhẹ lắm hay máy của tôi 20 luồng nên nó nhanh vậy

1726624589992.png
 
Mới thử 999 dòng bỏ lại 1 dòng mà sao nó nhẹ lắm hay máy của tôi 20 luồng nên nó nhanh vậy

View attachment 304020
Không biết bạn có thể hỗ trợ thêm xác thực OAuth không nhỉ? Những spreadsheet không chia sẻ "everyone" thì bắt buộc phải xác thực OAuth, ví dụ như mình viết phương thức thêm sheet mới bằng Office Scripts, mà Office Scripts hiện chưa hỗ trợ OAuth, không hỗ trợ cookie, LocalStorage hay SessionStorage để lưu trữ thông tin về access token và refresh token nên mình phải chèn trực tiếp vào code (hardcoded) không an toàn.
1726671724757.png
 
Không biết bạn có thể hỗ trợ thêm xác thực OAuth không nhỉ? Những spreadsheet không chia sẻ "everyone" thì bắt buộc phải xác thực OAuth, ví dụ như mình viết phương thức thêm sheet mới bằng Office Scripts, mà Office Scripts hiện chưa hỗ trợ OAuth, không hỗ trợ cookie, LocalStorage hay SessionStorage để lưu trữ thông tin về access token và refresh token nên mình phải chèn trực tiếp vào code (hardcoded) không an toàn.
View attachment 304054
đang dò nó sẻ có giao diện này .. qua TWebBrowser nhưng tôi không thích .. dò tiếp

thong thả và thư giản vi hành Google xem tình hình sao xong tính

1726711891115.png
 
nếu thấy khó qua thì thử dùng Python xem .. tham khảo chơi


Nó hổ trợ cho thư viện dựng sẳn còn ta chỉ việc gắp

* Cài đặt các thư viện gspread, oauth2client, PyOpenSSL:

Delphi chưa hổ trợ oauth2client mà do người dùng tự dò hay viết ... nếu ko làm được thì Mua = xong
Còn tôi mua là cái gì đó hoang đường --=0
vì Tôi xem nó như trò chơi Game tiêu kiển cho vui
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom