Làm cách nào để tải xuống giá chứng khoán trong Excel 2013? Có tương đương với chức năng bảng tính GoogleFinance của Google Doc không?


8

Trong bảng tính Google Docs, tôi có thể sử dụng công thức ô này:

=GoogleFinance("GOOG", "price")

để tải về giá mới nhất của một cổ phiếu. Có một chức năng tương đương trong Excel 2013 không?

Các phiên bản trước của Excel có tính năng thẻ thông minh đã tải xuống một tấn dữ liệu cho mỗi mã đánh dấu (thực tế là quá nhiều, nếu bạn chỉ cần giá) và tôi đã thấy các nguồn đề xuất ứng dụng Bing Finance cho Excel 2013. Thật không may điều này đã bị ngưng

Có một cách đơn giản để làm điều này? Tôi thực sự chỉ cần giá gần đây nhất và tôi không quan tâm nếu nó bị trì hoãn, đến từ Yahoo Finance, v.v. Có lẽ tôi có thể viết mã VBA để tải xuống tệp CSV từ YF, phân tích cú pháp, v.v. hy vọng tránh tạo ra một bảng tính kích hoạt macro.


Đây không phải là một tính năng mà Excel hỗ trợ ngoài hộp
Ramhound

1
Trong excel 2007/2010 data - existing connection - MSN MoneyCentral Investory Stock Quoteshoạt động, điều này đã được gỡ bỏ cho năm 2013? chỉnh sửa - vâng có vẻ như nó đã bị xóa và Ứng dụng Tài chính Bing là "sự thay thế". Bạn có thể thiết lập một data - from webtruy vấn để kiếm tiền, nhưng điều đó thật tẻ nhạt.
Raystafarian

@Raystafarian Làm cách nào để thiết lập truy vấn dữ liệu mới?
Michael A

Có vẻ như bạn có thể cần sử dụng truy vấn năng lượng trong nguồn
Raystafarian

1
@harrymc Tôi không phải là OP, nhưng tôi nghĩ câu trả lời có giá trị nhất sẽ là thứ gì đó sử dụng chức năng hiện có trong Excel 2013 và / hoặc là miễn phí.
Xuất sắc

Câu trả lời:


5

Bạn có thể sử dụng UDF như thế này -

Option Explicit

Public Function GetTickerPrice(ByVal ticker As String) As Double

    Dim IE As Object
    Dim pageData As Object

    Set IE = CreateObject("InternetExplorer.Application")
    Dim URL As String
    URL = "http://www.msn.com/en-us/money/stockdetails/fi-126.1." & ticker & ".NAS?symbol=" & ticker & "=PRFIMQ"

    IE.Navigate URL

     Do Until IE.ReadyState >= 4
            DoEvents
     Loop

     Application.Wait Now + TimeSerial(0, 0, 5)

     Set pageData = IE.document

     GetTickerPrice = pageData.getElementsByClassName("precurrentvalue")(0).innertext

     Set IE = Nothing
     Set pageData = Nothing
End Function

Bây giờ bạn có thể sử dụng GetTickerPrice("GOOG")và nhận được giá hiện tại.


Tôi đã thực hiện điều này trên Codereview.SE cho một số đầu vào.


2
Sẽ không tốt nhất khi định dạng là Double thay vì Long, vì vậy bạn không bị mất thông tin thập phân? Sau đó, người dùng cuối có thể quyết định nếu họ muốn làm tròn nó.
Jonno

Cảm ơn, điều này làm việc! Nhưng nó thực sự rất chậm - khoảng 20 giây để có được một giá cổ phiếu. Tôi giả sử mở IE và tải URL có những điểm nghẽn. Có cách nào để làm được việc này?
Xuất sắc

@Jonno vâng, tôi thấy Excellll đã thực hiện thay đổi
Raystafarian

@Excellll Tôi sẽ thử xem có cách nào khác không, có thể buộc IE phải im lặng, nhưng trừ khi chúng ta có thể tìm thấy một cơ sở dữ liệu như trước đây, chúng ta có thể bị kẹt (ít nhất là đối với các phiên bản excel cũ hơn).
Raystafarian

1
@Excellll có một phản hồi khá tốt tại CodeReview theo cách tiếp cận của tôi. Có vẻ như nó đủ khác để nó không được coi là giống như câu trả lời của tôi.
Raystafarian


-1

Có một Bổ trợ có tên là Stock Trích dẫn bổ trợ cho Excel 2013 thực hiện điều này và có phiên bản cho năm 2013. Cá nhân tôi không thể làm cho nó hoạt động được, nhưng nó đã tồn tại được vài năm nên có lẽ chỉ có tôi .


2
Chào mừng đến với Siêu người dùng. Điều này không giúp trả lời câu hỏi nhưng bạn có thể thêm thông tin về cách sử dụng plugin này không?
LJD200
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.