Bagaimana cara mengunduh harga saham di Excel 2013? Apakah ada yang setara dengan fungsi spreadsheet GoogleFinance Google Doc?

8

Dalam spreadsheet Google Documents, saya dapat menggunakan rumus sel ini:

=GoogleFinance("GOOG", "price")

untuk mengunduh harga saham terbaru. Apakah ada fungsi yang setara di Excel 2013?

Versi Excel yang lebih lama memiliki fitur tag cerdas yang mengunduh satu ton data untuk setiap ticker (terlalu banyak, sebenarnya, jika Anda hanya perlu harganya), dan saya telah melihat sumber yang menyarankan aplikasi Bing Finance untuk Excel 2013. Sayangnya ini telah dihentikan.

Apakah ada cara sederhana untuk melakukan hal ini? Saya benar-benar hanya perlu harga terbaru, dan saya tidak peduli jika tertunda, berasal dari Yahoo Finance, dll. Mungkin saya bisa menulis kode VBA untuk mengunduh file CSV dari YF, menguraikannya dan seterusnya, tapi saya berharap untuk menghindari membuat buku kerja yang diaktifkan makro.

Michael A
sumber
Ini bukan fitur yang didukung Excel di luar kotak
Ramhound
1
Dalam data - existing connection - MSN MoneyCentral Investory Stock Quoteskarya excel 2007/2010 , apakah ini dihapus untuk 2013? sunting - ya sepertinya sudah dihapus dan Aplikasi Bing Finance adalah "pengganti". Anda dapat mengatur data - from webkueri ke uang msn, tetapi itu akan membosankan.
Raystafarian
@Raystafarian Bagaimana cara saya mengatur permintaan data baru?
Michael A
Tampaknya Anda mungkin perlu menggunakan kueri daya pada sumber
Raystafarian
1
@harrymc Saya bukan OP, tapi saya pikir jawaban paling berharga adalah sesuatu yang menggunakan fungsionalitas yang ada di Excel 2013 dan / atau gratis.
Excellll

Jawaban:

5

Anda dapat menggunakan UDF seperti ini -

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

Sekarang Anda dapat menggunakan GetTickerPrice("GOOG")dan mendapatkan harga saat ini.


Saya memang mengambil ini ke Codereview.SE untuk beberapa masukan.

Raystafarian
sumber
2
Bukankah lebih baik memformat sebagai Double daripada Long, sehingga Anda tidak kehilangan informasi desimal? Kemudian pengguna akhir dapat memutuskan apakah mereka ingin memperbaikinya.
Jonno
Terima kasih, ini berhasil! Tapi ini sangat lambat - sekitar 20 detik untuk mendapatkan satu harga saham. Saya berasumsi membuka IE dan memuat URL ada hambatan. Apakah ada cara untuk menyiasati ini?
Excellll
@Jonno ya, saya melihat Excellll melakukan perubahan
Raystafarian
@Excellll Saya akan mencoba untuk melihat apakah ada jalan keluar, mungkin memaksa IE untuk diam, tapi kecuali kita dapat menemukan database seperti dulu, kita mungkin akan macet (setidaknya untuk versi excel yang lebih lama).
Raystafarian
1
@Excellll ada respons yang lumayan di CodeReview untuk pendekatan saya. Sepertinya itu cukup berbeda sehingga tidak akan dianggap sama dengan jawaban saya.
Raystafarian
-1

Ada Add-In yang disebut Stock Quote Add-In Untuk Excel 2013 yang melakukan ini, dan memiliki versi untuk 2013. Secara pribadi saya tidak bisa membuatnya berfungsi, tetapi sudah ada selama beberapa tahun sehingga mungkin hanya saya .

Jeremy Shaw
sumber
2
Selamat datang di Pengguna Super. Ini memang membantu menjawab pertanyaan tetapi bisakah Anda menambahkan info tentang bagaimana plugin ini harus digunakan?
LJD200