من میخوام در یک فایل اکسل، اطلاعات لحظه ای و اتوماتیک از سایت بورس تهران داشته باشم، یعنی قیمت آخرین معامله و برخی جزئیات دیگر نماد ها کاملا اتوماتیک و لحظه ای در اکسل درج شود و من بتونم محاسبات مدنظرم را با آن ها انجام بدم، اگر یکی از استادان عزیز می تونه این کار را انجام دهد، لطفا راهنمایی ام کند، با پاور کوئری هم که اصلا نتونستم این کار را انجام دهم
کد نویسی vba اکسل برای دریافت اطلاعات لحظه ای و اتوماتیک از سایت بورس تهران
Collapse
X
-
سلام خدمت دوستان و استادان عزیز من، در بخش توابع اکسل از دوستان سوالی مشابه همین کردم، اما درخواست یک کمک دارم، خیلی ممنون میشم راهنمایی ام کنید،
من میخوام در یک فایل اکسل، اطلاعات لحظه ای و اتوماتیک از سایت بورس تهران داشته باشم، یعنی قیمت آخرین معامله و برخی جزئیات دیگر نماد ها کاملا اتوماتیک و لحظه ای در اکسل درج شود و من بتونم محاسبات مدنظرم را با آن ها انجام بدم، اگر یکی از استادان عزیز می تونه این کار را انجام دهد، لطفا راهنمایی ام کند، با پاور کوئری هم که اصلا نتونستم این کار را انجام دهمبرچسب ها: هیچکدام -
استادان بزرگوار خواهش می کنم کمکم کنید، من به زحمت تونستم این اکسل را پیدا کنم، البته آموزش آن هم در یوتیوب هست (https://www.youtube.com/watch?v=IOzHacoP-u4)، فقط نمی تونم کد مربوط به یک نماد را در سایت Tsetmc پیدا کنم، همین طور چطوری باید اون قیمت را داخل یک سلول درج کنم؟ این که فقط در محیط ویژوال بیسیک هست!! فایل اکسل را پیوست کردم خواهش می کنم راهنمایی ام کنید من هیچی از کد نویسی ویژوال بیسیک نمیدونم -
با سلام
در قسمت بالای همین صفحه در قسمت جستجو کلمه بورس را سرچ کنید میتوانید مطالب قبلی در این مورد را پیدا کنید
لینک صفحه
http://www.tsetmc.com/tsev2/excel/Ma...hPlus.aspx?d=0Last edited by iranweld; 2019/07/04, 09:10.کامنت
-
خیلی ممنون، اما لینک (http://www.tsetmc.com/tsev2/excel/Ma...hPlus.aspx?d=0) دیگه کار نمی کنه، یعنی فقط میشه هر بار دانلود کرد، اما اطلاعات لحظه ای در حال تغییر اند، از قسمت پاور کوئری هم نمیشه، میشه با همون آموزشی که فرستادم راهنمایی ام کنید؟ در اون آموزش در قسمت inspect element صفحات وب که در مرورگر میشه دید، کد مخصوص اون متغیر قیمت را کپی می کرد یعنی تگ span، اما در سایت tsetmc اصلا این تگ وجود نداره و اصلا نمیشه این کار را کرد، میشه راهنمایی ام کنید؟ ممنونبا سلام
در قسمت بالای همین صفحه در قسمت جستجو کلمه بورس را سرچ کنید میتوانید مطالب قبلی در این مورد را پیدا کنید
لینک صفحه
http://www.tsetmc.com/tsev2/excel/Ma...hPlus.aspx?d=0کامنت
-
سلام دوست عزیزخیلی ممنون، اما لینک (http://www.tsetmc.com/tsev2/excel/Ma...hPlus.aspx?d=0) دیگه کار نمی کنه، یعنی فقط میشه هر بار دانلود کرد، اما اطلاعات لحظه ای در حال تغییر اند، از قسمت پاور کوئری هم نمیشه، میشه با همون آموزشی که فرستادم راهنمایی ام کنید؟ در اون آموزش در قسمت inspect element صفحات وب که در مرورگر میشه دید، کد مخصوص اون متغیر قیمت را کپی می کرد یعنی تگ span، اما در سایت tsetmc اصلا این تگ وجود نداره و اصلا نمیشه این کار را کرد، میشه راهنمایی ام کنید؟ ممنون
دقیقا چه صفحه ای میرین و کدوم قسمت سایت رو میخواین؟
من توی صفحه دیده بان رفتم و همه فیلدها با تگ td که برای ساخت جدول هست ساخته شدن. مثلا یکی از فیلدها (ممکنه وقتی که شما ببینید عوض شده باشه واسه همین عکس گذاشتم) که مال قیمت پایانی ولساپا - لیزینگ رایان سایپا بود رو با جایگزین کردن بخشی که توی کد فایل خودتون با اسم کلاس میگیره با این کد:
و همچنین آخرش که پیغام میده رو با این کد:کد PHP:price = html.getElementsByTagName("td").Item(93).innerText
گرفتم و توی فیلد A1 نمایش دادم (اسم وبسایت هم باید بالا جلوی متغیر website بخوره که من http://www.tsetmc.com/Loader.aspx?ParTree=15 رو زدم)کد PHP:Range("A1") = price
اگه دقیقا مشخص بشه که چه فیلدهایی از سایت رو میخوایید و چجوری میخوایید نمایشش بدین میشه کد رو تغییر داد
اون تب هایی هم که توی مرورگرم باز هستن مال اسکرین شات گرفتن از بخشی از صفحه و خوندن پیکسلهای خاصی از صفحه برای کلیک یا راست کلیک یا دابل کلیک یا کلیک و درگ کردن و اتوماتیک کردن برنامه ها و بازی ها به صورت شرطی توی VBA هست. اگر کسی علاقمند بود درخدمتم.Last edited by mrhartsclube; 2019/07/08, 08:36.[CENTER][COLOR=#696969][FONT=lucida console]... [B]Programming [/B]C# - VB.Net - VC++ - ASP.Net - HTML - CSS - JS - AS2 - AutoIt - Pascal - Delphi - PHP - Python - VBA - Etc
[/FONT][/COLOR][SIZE=2][FONT=lucida console][COLOR=#808080]... 2D & 3D [B]Graphic Designer[/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] 2D & 3D [B]Animator [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Game [/B]Designer & [B]Hacker [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] Data [B]Forensic [/B]Expert [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Ethical [/B]Hacker [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Pen[/B] Tester
[/COLOR][/FONT][/SIZE][COLOR=#ff0000][FONT=courier new][SIZE=4][B].: Expert in doing what nobody else can :.[/B][/SIZE][/FONT][/COLOR][/CENTER]کامنت
-
سلام دوست عزیز دلم، واقعا ممنونم ازتون، انشاالله خدا شما را به درجات والا برساند، بی نهایت سپاسگزارم،سلام دوست عزیز
دقیقا چه صفحه ای میرین و کدوم قسمت سایت رو میخواین؟
من توی صفحه دیده بان رفتم و همه فیلدها با تگ td که برای ساخت جدول هست ساخته شدن. مثلا یکی از فیلدها (ممکنه وقتی که شما ببینید عوض شده باشه واسه همین عکس گذاشتم) که مال قیمت پایانی ولساپا - لیزینگ رایان سایپا بود رو با جایگزین کردن بخشی که توی کد فایل خودتون با اسم کلاس میگیره با این کد:
و همچنین آخرش که پیغام میده رو با این کد:کد PHP:price = html.getElementsByTagName("td").Item(93).innerText
گرفتم و توی فیلد A1 نمایش دادم (اسم وبسایت هم باید بالا جلوی متغیر website بخوره که من http://www.tsetmc.com/Loader.aspx?ParTree=15 رو زدم)کد PHP:Range("A1") = price
[ATTACH=CONFIG]19340[/ATTACH]
اگه دقیقا مشخص بشه که چه فیلدهایی از سایت رو میخوایید و چجوری میخوایید نمایشش بدین میشه کد رو تغییر داد
اون تب هایی هم که توی مرورگرم باز هستن مال اسکرین شات گرفتن از بخشی از صفحه و خوندن پیکسلهای خاصی از صفحه برای کلیک یا راست کلیک یا دابل کلیک یا کلیک و درگ کردن و اتوماتیک کردن برنامه ها و بازی ها به صورت شرطی توی VBA هست. اگر کسی علاقمند بود درخدمتم.
خیلی ببخشید دوست عزیزم یک سوال داشتم، چطوری شماره Item را پیدا کنم؟ مثلا شما در کد بالا، شماره Item را "93" وارد کردید، واقعا ممنون میشم راهنمایی ام کنید دوست عزیز منکامنت
-
دوست عزیز من اگر میشه برای مثال قیمت پایانی نماد خودرو (http://tsetmc.com/Loader.aspx?ParTre...83838195688438) را در کد قرار بدید تا اکسل نشان بده و همچنین چطور میشه قیمت ها به صورت لحظه ای و ثانیه به ثانیه در آن سلول تازه سازی شوند؟ واقعا ممنونمکامنت
-
واقعا ممنونم از راهنمایی تان، ببخشید میشه با همون روش vba توضیح بدید؟ چون میخوام اطلاعات ثانیه ای بروز شوند و از همه مهم تر از هر سایتی که خواستم اطلاعات دریافت کنم چون با این روش فقط از سایت بورس تهران میشه قیمت ها را دریافت کرد و قیمت ها هم نهایتا هر 1 دقیقه بروز می شوند، خیلی ممنون میشم راهنمایی کنید دوست عزیزمکامنت
-
ساده ترین راه همین بود که این قابلیت رو سایت بورس تهران فراهم کرده تا دیتا بصورت اتوماتیک وارد فایل اکسل بشه.
در صورتیکه بخواد هر ثانیه به یک سایت متصل بشه امکان پذیر نیست چون انجام این پروسه حداقل 30 ثانیه ای زمانبر هستش
از طریق vba در حد سواد بنده نیست ان شاالله دوستان راهنمایی لازم رو انجام بدند.
در صورتیکه به زبان انگلیسی مسلط هستید این سایت رو بررسی کنید
لینک سایتکامنت
-
سلام مجدد خدمت شما دوست گرامی
برای پیدا کردنش توی سایتهایی که معمولی و درست نوشته شدن کافیه سورس سایت رو باز کنید و توش تگ یا کلاس آی دی یا هرچیز دیگه ای رو که میخواین سرچ کنین و وقتی به اونکه میخواستین رسیدین عددشو یکی کم کنید (مثلا 100 امین تگ مد نظرتونه، چون index از 0 گداشته میشه عددتون میشه 99) ولی توی این سایت یه سری تگ داره که توی سورس نشون نمیده، حدود 20-30 تا اختلاف داشت که من برای اینکه کد سنگین نشه سرچ کردم.
اگه میخواین همیشه به نماد خاص رو ببینید و اگه نماد مورد نظرتون توی اون صفحه نبود پیغام بده که نیست لازمه که ابندا تگی رو سرچ کنید که inner text ش اسم اون نماد باشه، بعد مثلا 3 تا بهش اضافه میکنید میشه عدد مورد نظرتون.
در مورد این صفحه که فرستادین همش جاوا اسکریپته و شما با ساخت یه مرورگر باید اول صفحه رو لود کنید و بعد اطلاعات داخلش رو scrape کنید[CENTER][COLOR=#696969][FONT=lucida console]... [B]Programming [/B]C# - VB.Net - VC++ - ASP.Net - HTML - CSS - JS - AS2 - AutoIt - Pascal - Delphi - PHP - Python - VBA - Etc
[/FONT][/COLOR][SIZE=2][FONT=lucida console][COLOR=#808080]... 2D & 3D [B]Graphic Designer[/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] 2D & 3D [B]Animator [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Game [/B]Designer & [B]Hacker [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] Data [B]Forensic [/B]Expert [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Ethical [/B]Hacker [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Pen[/B] Tester
[/COLOR][/FONT][/SIZE][COLOR=#ff0000][FONT=courier new][SIZE=4][B].: Expert in doing what nobody else can :.[/B][/SIZE][/FONT][/COLOR][/CENTER]کامنت
-
سلام مجدد دوست عزیز من، خیلی ببخشید میشه یه نمونه فایل اکسل از گرفتن قیمت پایانی نماد خودرو (http://www.tsetmc.com/Loader.aspx?Pa...83838195688438) طراحی کنید؟ و نمیشه مثلا چند شرط را برای گرفتن قیمت اعمال کنیم؟ یعنی مثلا یک ID و یک Class بدیم و دیگه مرورگر باز نشه؟ و چطور هر ثانیه به طور اتوماتیک اطلاعات تازه سازی شوند؟ واقعا از راهنمایی شما ممنونمسلام مجدد خدمت شما دوست گرامی
برای پیدا کردنش توی سایتهایی که معمولی و درست نوشته شدن کافیه سورس سایت رو باز کنید و توش تگ یا کلاس آی دی یا هرچیز دیگه ای رو که میخواین سرچ کنین و وقتی به اونکه میخواستین رسیدین عددشو یکی کم کنید (مثلا 100 امین تگ مد نظرتونه، چون index از 0 گداشته میشه عددتون میشه 99) ولی توی این سایت یه سری تگ داره که توی سورس نشون نمیده، حدود 20-30 تا اختلاف داشت که من برای اینکه کد سنگین نشه سرچ کردم.
اگه میخواین همیشه به نماد خاص رو ببینید و اگه نماد مورد نظرتون توی اون صفحه نبود پیغام بده که نیست لازمه که ابندا تگی رو سرچ کنید که inner text ش اسم اون نماد باشه، بعد مثلا 3 تا بهش اضافه میکنید میشه عدد مورد نظرتون.
در مورد این صفحه که فرستادین همش جاوا اسکریپته و شما با ساخت یه مرورگر باید اول صفحه رو لود کنید و بعد اطلاعات داخلش رو scrape کنیدLast edited by mohammad735; 2019/07/10, 09:41.کامنت
-
شرط رو میشه گذاشت (درواقع باید با کلاس و آی دی محدود کنیم) ولی چون پیج داینامیک هست باید یه بار لود بشه تا بصورت تگ در بیاد و بشه خوندش، واسه همین توی هربار ریفرش هم لازمه مرورگر باز بشه. برای هر ثانیه ش هم میشه یه حلقه تعریف کرد که ثانیه ای یه بار کد رو اجرا کنه.سلام مجدد دوست عزیز من، خیلی ببخشید میشه یه نمونه فایل اکسل از گرفتن قیمت پایانی نماد خودرو (http://www.tsetmc.com/Loader.aspx?Pa...83838195688438) طراحی کنید؟ و نمیشه مثلا چند شرط را برای گرفتن قیمت اعمال کنیم؟ یعنی مثلا یک ID و یک Class بدیم و دیگه مرورگر باز نشه؟ و چطور هر ثانیه به طور اتوماتیک اطلاعات تازه سازی شوند؟ واقعا از راهنمایی شما ممنونم
در حال حاضر بزرگترین مشکل اینجاست که سایت اصلا برای من باز نمیشه! از هر صد بار یه بار با فیل ترش کن باز میشه!!Last edited by mrhartsclube; 2019/07/10, 18:56.[CENTER][COLOR=#696969][FONT=lucida console]... [B]Programming [/B]C# - VB.Net - VC++ - ASP.Net - HTML - CSS - JS - AS2 - AutoIt - Pascal - Delphi - PHP - Python - VBA - Etc
[/FONT][/COLOR][SIZE=2][FONT=lucida console][COLOR=#808080]... 2D & 3D [B]Graphic Designer[/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] 2D & 3D [B]Animator [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Game [/B]Designer & [B]Hacker [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] Data [B]Forensic [/B]Expert [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Ethical [/B]Hacker [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Pen[/B] Tester
[/COLOR][/FONT][/SIZE][COLOR=#ff0000][FONT=courier new][SIZE=4][B].: Expert in doing what nobody else can :.[/B][/SIZE][/FONT][/COLOR][/CENTER]کامنت
-
خب یکم بیشتر توی سایت دقت کردم دیدم برای instinfofast.aspx دائما داره Request میفرسته و توی Response برگشتی آیتم سوم (با کاما جدا شده) دقیقا همون چیزیه که شما میخواید. پس کد به این شکل شد:
و برای راحتی کار دوتا Shape روی صفحه بکشید و یکیشون رو روش بنویسید شروع و دیگری پایان. به شروع ماکروی Send_Get_Req رو بدین و به پایان Stop_Get_Req رو بدین. برای شروع یه بار روی پایان بزنید و بعد شروع رو بزنید. هروقت خواستید پایان رو بزنید که ریفرش متوقف بشه.
کد PHP:Dim RepeatTime As String
Sub Send_Get_Req()
Dim URL As String
URL = "http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=65883838195688438&c=34+"
Dim Req As Object
Dim Res As String
Set Req = CreateObject("MSXML2.XMLHTTP")
Req.Open "GET", URL, False
Req.send
Res = StrConv(Req.responseBody, vbUnicode)
Cells(1, 1) = Split(Res, ",")(3)
If RepeatTime = "00:00:01" Then
Repeat = Now + TimeValue(RepeatTime)
Application.OnTime Repeat, "Send_Get_Req"
End If
End Sub
Sub Stop_Get_Req()
If RepeatTime = "00:00:01" Then
RepeatTime = "Stop"
Else
RepeatTime = "00:00:01"
End If
End Sub
فایل رو پیوست کردم
فایل های پیوست شدهLast edited by mrhartsclube; 2019/07/10, 19:51.[CENTER][COLOR=#696969][FONT=lucida console]... [B]Programming [/B]C# - VB.Net - VC++ - ASP.Net - HTML - CSS - JS - AS2 - AutoIt - Pascal - Delphi - PHP - Python - VBA - Etc
[/FONT][/COLOR][SIZE=2][FONT=lucida console][COLOR=#808080]... 2D & 3D [B]Graphic Designer[/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] 2D & 3D [B]Animator [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Game [/B]Designer & [B]Hacker [/B][/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] Data [B]Forensic [/B]Expert [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Ethical [/B]Hacker [/COLOR][COLOR=#ff0000][B]|[/B][/COLOR][COLOR=#808080] [B]Pen[/B] Tester
[/COLOR][/FONT][/SIZE][COLOR=#ff0000][FONT=courier new][SIZE=4][B].: Expert in doing what nobody else can :.[/B][/SIZE][/FONT][/COLOR][/CENTER]کامنت
-
خیلی ممنونم دوست عزیزم!!!! انشاالله خداوند هر چی که می خواید بهتون بده، ممنونم!! دقیقا همون چیزی که می خواستم، فقط یک سوال داشتم خیلی خیلی معذرت میخوام میخواستم بدونم برای یک سایت دیگه باید چی کار کنم؟ به عنوان مثال برای آخرین قیمت های معامله قرارداد های بازار مشتقه (http://cdn.ime.co.ir) چطور می تونم انجام دهم؟خب یکم بیشتر توی سایت دقت کردم دیدم برای instinfofast.aspx دائما داره Request میفرسته و توی Response برگشتی آیتم سوم (با کاما جدا شده) دقیقا همون چیزیه که شما میخواید. پس کد به این شکل شد:
و برای راحتی کار دوتا Shape روی صفحه بکشید و یکیشون رو روش بنویسید شروع و دیگری پایان. به شروع ماکروی Send_Get_Req رو بدین و به پایان Stop_Get_Req رو بدین. برای شروع یه بار روی پایان بزنید و بعد شروع رو بزنید. هروقت خواستید پایان رو بزنید که ریفرش متوقف بشه.
کد PHP:Dim RepeatTime As String
Sub Send_Get_Req()
Dim URL As String
URL = "http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=65883838195688438&c=34+"
Dim Req As Object
Dim Res As String
Set Req = CreateObject("MSXML2.XMLHTTP")
Req.Open "GET", URL, False
Req.send
Res = StrConv(Req.responseBody, vbUnicode)
Cells(1, 1) = Split(Res, ",")(3)
If RepeatTime = "00:00:01" Then
Repeat = Now + TimeValue(RepeatTime)
Application.OnTime Repeat, "Send_Get_Req"
End If
End Sub
Sub Stop_Get_Req()
If RepeatTime = "00:00:01" Then
RepeatTime = "Stop"
Else
RepeatTime = "00:00:01"
End If
End Sub
فایل رو پیوست کردم
Last edited by mohammad735; 2019/07/10, 22:08.کامنت



کامنت