Lấy dữ liệu báo cáo tài chính từ website

Liên hệ QC

zine

Thành viên mới
Tham gia
21/8/07
Bài viết
27
Được thích
13
Chào các bạn,
Mình muốn lấy dữ liệu excel báo cáo tài chính của doanh nghiệp từ một website, cụ thể là https://www.vndirect.com.vn (ví dụ BCTC của NHTM cổ phẩn Quân đội, thì ở địa chỉ: https://www.vndirect.com.vn/portal/bang-can-doi-ke-toan/mbb.shtml). Mình có sử dụng chưc năng Get External Data thì có bảng được (CĐKT thì được) bảng không (Kết quả kinh doanh thì không được), và nó cũng thủ công.
Mình nhờ các cao thủ lấy giúp được mình với. Yêu cầu cơ bản như file đính kèm
Thank so much
 

File đính kèm

  • File Nhu cau lay bao cao tai chinh dn.xlsx
    15.3 KB · Đọc: 270
Lấy data (bảng) từ 1 website. Có thể chọn các thông số như loại, mã, thời gian.
Ví dụ: từ dữ liệu trong web: https://www.vndirect.com.vn/portal/bao-cao-luu-chuyen-tien-te/mbb.shtml
Khi mình thay đổi các thông số trên excel thì tự động cập nhật cho mình
Làm ra 1 file excel

y hệt bác trên nói thôi bác.
Bài đã được tự động gộp:

Bác làm được chỉ giáo em với ạ. E xin hậu tạ
 

File đính kèm

  • Data BCTC.xlsx
    15.2 KB · Đọc: 368
Đó bạn ơi. Bạn làm như file mình up.
Mình điền mã chứng khoán vào là nó hiện ra BCTC của công ty đó từ bảng nguồn web
Cái này là viết cả một ứng dụng đó bạn
trong file tôi thấy bạn chỉ lấy dữ liệu mục Báo Cáo Tài Chính
trong website thì có rất nhiều mục
 
Cái này nên dùng PowerQuery của excel 2013, 2016 mà lấy cho nó lành và nhanh
(nếu không biết, liên hệ và dự Hội thảo Power Pivot ở Hải Phòng - trang chủ đó, tôi nghĩ có thể nói đến)
 
Dựa trên site của tudokodo tôi tạo một ứng dụng nhỏ theo ý muốn của bạn.
Với các site của bạn zine cũng đơn giản chỉnh sửa lại trong VBA.

@ngocleasing đã hỏi tôi ở bài:
https://www.giaiphapexcel.com/diendan/threads/lấy-dữ-liệu-website-vào-excel.122513/

Có thể site bạn muốn cạo cũng ứng dụng được với file bên dưới.

Đối với một số site chứng khoán có thể được viết ở dạng Single Page, thường là sử dụng javascript để gửi và nhận dữ liệu
Phải nhờ đến sự trợ giúp từ ứng dụng khác như Chrome-SeleniumBasic hoặc Internet Explore,...
Lúc này Khi khởi động ứng dụng Excel sẽ khiến quá trình Mở ứng dụng khác mất một thời gian, trong quá trình sử dụng thì hoạt động bình thường

File bên dưới yêu cầu Internet Explorer 11

Link File

Để ủng hộ bài viết, các bạn hãy ấn vào "Trả lời" của bài viết này và để lại một comment, xin cảm ơn!
 
Lần chỉnh sửa cuối:
Dựa trên site của tudokodo tôi tạo một ứng dụng nhỏ theo ý muốn của bạn.
Với các site của bạn zine cũng đơn giản chỉnh sửa lại trong VBA.

@ngocleasing đã hỏi tôi ở bài:
https://www.giaiphapexcel.com/diendan/threads/lấy-dữ-liệu-website-vào-excel.122513/

Có thể site bạn muốn cạo cũng ứng dụng được với file bên dưới.

Đối với một số site chứng khoán có thể được viết ở dạng Single Page, thường là sử dụng javascript để gửi và nhận dữ liệu
Với file bên dưới sẽ không thực hiện được. Phải nhờ đến sự trợ giúp từ ứng dụng khác như Chrome-SeleniumBasic hoặc Internet Explore,... và viết code lại.
Vâng, cảm ơn bác nhiều ạ. Tối về em thử xem. Có gì bác cho em hỏi sau nhé!
 
!
 
Lần chỉnh sửa cuối:
Dựa trên site của tudokodo tôi tạo một ứng dụng nhỏ theo ý muốn của bạn.
Với các site của bạn zine cũng đơn giản chỉnh sửa lại trong VBA.

@ngocleasing đã hỏi tôi ở bài:
https://www.giaiphapexcel.com/diendan/threads/lấy-dữ-liệu-website-vào-excel.122513/

Có thể site bạn muốn cạo cũng ứng dụng được với file bên dưới.

Đối với một số site chứng khoán có thể được viết ở dạng Single Page, thường là sử dụng javascript để gửi và nhận dữ liệu
Với file bên dưới sẽ không thực hiện được. Phải nhờ đến sự trợ giúp từ ứng dụng khác như Chrome-SeleniumBasic hoặc Internet Explore,... và viết code lại.

Bác ơi, hình như ứng dụng của bác không lấy được phần kết quả kinh doanh thì phải ạ? Và khi chọn "cả năm" thì không hiện thị theo năm mà vẫn hiện thị theo quý ạ (trong mục "bảng can đối kế toán").
Và có thể làm cách nào chạy 1 cái là ra cả 3 báo cáo: kết quả kinh doanh, cân đối kế toán, và lưu chuyển tiền tệ không bác?. Số kỳ lớn hơn 5 có được không bác?
Ah đầu tiên em chạy thì báo lỗi như hình dưới đây. Xong em vào tool... Reference em bỏ chọn cái Missing đi thì chạy được nhưng không lấy được những cái trênIMG_20190516_190658.jpgIMG_20190516_190637.jpgMiss.png
 

File đính kèm

  • Miss.png
    Miss.png
    18.2 KB · Đọc: 24
Lần chỉnh sửa cuối:
File dưới đây cập nhật dữ liệu tại VNDirect và VietStock, nếu bạn nào muốn cập nhật từ các trang khác thì liên hệ ở link bên dưới.

Đã cập nhật file : 21/08/2019 16:44 GMT+7
File thường xuyên cập nhật tại Nguồn
Link liên hệ và tài trợ
 

File đính kèm

  • DataStock_L.xlsb
    296.4 KB · Đọc: 1,117
Lần chỉnh sửa cuối:
Đó là những lỗi cơ bản , vì bác chưa biết sử dụng VBA.

"MISSING: ..." tức là thư viện hoặc Add-ins không có, nên bỏ dấu tick đi.
[A1] bị lỗi vì chưa thêm thư viện , thì sửa thành Range("A1")

File dưới đây không biết có đúng theo mong muốn của bác không.
Sẽ có 3 Trang tính riêng cho từng mục.

Có một số công việc cần viết code thêm như:
+ Lấy nhiều dữ liệu hơn
+ Tạo data lưu dữ liệu , tạo cơ chế tìm kiếm ngay trên Excel
+ Tự động cập nhật dữ liệu, không phải dùng tay.
Cảm ơn bác rất nhiều, chúc bác mọi điều tốt đẹp trong cuộc song. Không có bác em không biết xoay xở sao. Mong rang diễn đàn có nhiều người tốt và có trình độ cao như bác để bọn em học hỏi!
 
Đó là những lỗi cơ bản , vì bác chưa biết sử dụng VBA.

"MISSING: ..." tức là thư viện hoặc Add-ins không có, nên bỏ dấu tick đi.
[A1] bị lỗi vì chưa thêm thư viện , thì sửa thành Range("A1")

File dưới đây không biết có đúng theo mong muốn của bác không.
Sẽ có 3 Trang tính riêng cho từng mục.

Có một số công việc cần viết code thêm như:
+ Lấy nhiều dữ liệu hơn
+ Tạo data lưu dữ liệu , tạo cơ chế tìm kiếm ngay trên Excel
+ Tự động cập nhật dữ liệu, không phải dùng tay.
Bác ơi, phần mền của bác rất tuyệt. Tuy nhiên còn 1 vấn đề nhỏ là:
Giả sử em lấy dữ lieu quý 1/2018
Đó là những lỗi cơ bản , vì bác chưa biết sử dụng VBA.

"MISSING: ..." tức là thư viện hoặc Add-ins không có, nên bỏ dấu tick đi.
[A1] bị lỗi vì chưa thêm thư viện , thì sửa thành Range("A1")

File dưới đây không biết có đúng theo mong muốn của bác không.
Sẽ có 3 Trang tính riêng cho từng mục.

Có một số công việc cần viết code thêm như:
+ Lấy nhiều dữ liệu hơn
+ Tạo data lưu dữ liệu , tạo cơ chế tìm kiếm ngay trên Excel
+ Tự động cập nhật dữ liệu, không phải dùng tay.
Bác ơi, phần mền của bác rất tuyệt. Tuy nhiên còn 1 vấn đề nhỏ là: giả sử em lấy báo cáo mbb và chọn kỳ báo cáo là quý 1, năm báo cáo là 2018. Thì được báo cáo cân đối và báo cáo kết quả kinh doanh bắt đầu từ quý 1/2018 dịch về trước, nhưng báo cáo lưu chuyển tiền tệ không dịch theo mà vẫn bắt đầu từ quý 1/2019 như hình dưới đây ạ. Bác chỉnh lại giúp em với ạ.View attachment 217405View attachment 217406View attachment 217407View attachment 217405View attachment 217407View attachment 217405View attachment 217406View attachment 217407
Bài đã được tự động gộp:

Bác ơi, phần mền của bác rất tuyệt. Tuy nhiên còn 1 vấn đề nhỏ là:
Giả sử em lấy dữ lieu quý 1/2018

Bác ơi, phần mền của bác rất tuyệt. Tuy nhiên còn 1 vấn đề nhỏ là: giả sử em lấy báo cáo mbb và chọn kỳ báo cáo là quý 1, năm báo cáo là 2018. Thì được báo cáo cân đối và báo cáo kết quả kinh doanh bắt đầu từ quý 1/2018 dịch về trước, nhưng báo cáo lưu chuyển tiền tệ không dịch theo mà vẫn bắt đầu từ quý 1/2019 như hình dưới đây ạ. Bác chỉnh lại giúp em với ạ.View attachment 217405View attachment 217406View attachment 217407View attachment 217405View attachment 217407View attachment 217405View attachment 217406View attachment 217407
ah, sorry bác, dữ lieu nguồn bị thế ạ, chứ còn phần mền của bác tuyệt vời rồi ạ
 
Lần chỉnh sửa cuối:
Đó là những lỗi cơ bản , vì bác chưa biết sử dụng VBA.

"MISSING: ..." tức là thư viện hoặc Add-ins không có, nên bỏ dấu tick đi.
[A1] bị lỗi vì chưa thêm thư viện , thì sửa thành Range("A1")

File dưới đây không biết có đúng theo mong muốn của bác không.
Sẽ có 3 Trang tính riêng cho từng mục.

Có một số công việc cần viết code thêm như:
+ Lấy nhiều dữ liệu hơn
+ Tạo data lưu dữ liệu , tạo cơ chế tìm kiếm ngay trên Excel
+ Tự động cập nhật dữ liệu, không phải dùng tay.

Bác ơi, có cách nào lấy dữ nhiều kỳ bằng cách gộp dữ liệu 2 lần lấy với nhau không ạ, mà không phải dùng thêm phần mền khác ấy. Tức là giả sử lấy từ quý 4/2016 đến quý 4/2017, xong từ quý 1/2018 đến quý 1/2019. Xong 2 cái đấy gôp lại với nhau để có dữ liệu từ quý 4/2016 đến quý 1/2019. Hoặc nếu số kỳ truy vấn lớn hơn 5 thì tự động chia ra số lần truy vấn xong gộp lại ạ.
Cảm ơn bác nhiều nhé!
 
Lần chỉnh sửa cuối:
Bác @HeSanbi ơi, phần mền bác bị chút lỗi bác ah, tức là khi chạy 1 doanh nghiệp nào 2 lần thì báo cáo kết quả kd sẽ bị lỗi. Chẳng hạn em chay báo cáo vcb sau đó chạy báo cáo bvh, sau đó em lại chạy báo cáo vcb, sau đó em lại chạy báo cáo bvh thì lúc này báo cáo kết quả kinh doanh của vcb nó bị lưu lại mặc dù hiện thời em đang chạy bvh.
Và nếu em them sheet vào xong đặt công thức để tính toán thì lưu lại có ảnh hưởng gì đến phần mền không bác?
 
Bác @HeSanbi ơi, phần mền bác bị chút lỗi bác ah, tức là khi chạy 1 doanh nghiệp nào 2 lần thì báo cáo kết quả kd sẽ bị lỗi. Chẳng hạn em chay báo cáo vcb sau đó chạy báo cáo bvh, sau đó em lại chạy báo cáo vcb, sau đó em lại chạy báo cáo bvh thì lúc này báo cáo kết quả kinh doanh của vcb nó bị lưu lại mặc dù hiện thời em đang chạy bvh.
Và nếu em them sheet vào xong đặt công thức để tính toán thì lưu lại có ảnh hưởng gì đến phần mền không bác?
Lí do là tốc độ xử lý khi chuyển quý của Browser là Internet Explore chậm nên trong code tôi để độ trể là 1 giây để chờ.
BC_KQKD phải chờ Page Load nên phải làm như vậy. Riêng BCD_KT và BC_CLTT tôi dùng giao thức HTTP Request nên rất nhanh không cần thay đổi thời gian chờ. Vì Data sẽ được load ngay lập tức.
Bây giờ tăng lên 1 giây nữa, nếu chắc hơn thì để thời gian chờ lâu hơn.

Đọc trong Code VBA module "LayBCTC" bác sẽ thấy đoạn Hoặc vào Code ấn Ctrl+H và tìm:
PHP:
DelayMSec 2000, True
là chờ trong hai giây, bác muốn sửa lại bao nhiêu tùy ý, nếu tốc dộ Internet chậm và cấu hình PC thấp thì tăng lên

Bác có thể tải lại File Link File
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom