کد نویسی vba اکسل برای دریافت اطلاعات لحظه ای و اتوماتیک از سایت بورس تهران

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • mrhartsclube

    • 2017/11/15
    • 130
    • 81.00

    #16
    سلام دوست عزیز
    خواهش میکنم، وظیفه ست
    مراحل کار رو مینویسم، شما سورس مورد نظر (همون فایل اولی که فرستادین) رو دارین فقط باید تغییرات بدین
    این توضیحاتی که میدم شامل IE یا Edge نمیشه کلا اینا جدیدشونم منسوخه!!!
    1. در قدم اول سورس سایت رو ببینید چون با اون روش که تگ هارو چک میکنه از روی سورس سایت این کار رو میکنه (برای دیدن سورس سایت توی اکثر مرورگرها روی یه جای سایت راست کلیک میکنید و View Source رو میزنید)
    2. اگه داخل سورس تونستید اون چیزی که میخوایید رو پیدا کنید (مثلا ime.co.ir میشه) پس با همین تگ ها خیلی راحت میتونید پیدا کنید (با همون پیدا کردن اندیس اون تگ توی کالکشنتون که قبلا عرض کرده بودم)
    3. اگه دیدین سورس پیج هیچ تگ یا کلاسی نداره و نتونستید چیزی که میخواید رو ببینید باید از قسمت Network توی بخش Inspect Element (در منوی راست کلیک) ببینید چه درخواستی به چه پیجی ارسال میشه و خروجیش چی هست (چون سایتهای بورس ثانیه ای درخواست میفرستن پیدا کردنش کار سختی نیست)
    4. شما هم همون درخواست رو بفرستین و خروجیش رو بگیرین (مثل سورسی که خدمتتون دادم) و بعد باید با روش های Parse کردن محتوای خروجی رو بسته به نوع خروجی با Json یا String پردازش کنید تا مطلب مد نظرتون رو بگیرید
    [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]

    کامنت

    • mohammad735

      • 2019/05/22
      • 26

      #17
      نوشته اصلی توسط mrhartsclube
      سلام دوست عزیز
      خواهش میکنم، وظیفه ست
      مراحل کار رو مینویسم، شما سورس مورد نظر (همون فایل اولی که فرستادین) رو دارین فقط باید تغییرات بدین
      این توضیحاتی که میدم شامل IE یا Edge نمیشه کلا اینا جدیدشونم منسوخه!!!
      1. در قدم اول سورس سایت رو ببینید چون با اون روش که تگ هارو چک میکنه از روی سورس سایت این کار رو میکنه (برای دیدن سورس سایت توی اکثر مرورگرها روی یه جای سایت راست کلیک میکنید و View Source رو میزنید)
      2. اگه داخل سورس تونستید اون چیزی که میخوایید رو پیدا کنید (مثلا ime.co.ir میشه) پس با همین تگ ها خیلی راحت میتونید پیدا کنید (با همون پیدا کردن اندیس اون تگ توی کالکشنتون که قبلا عرض کرده بودم)
      3. اگه دیدین سورس پیج هیچ تگ یا کلاسی نداره و نتونستید چیزی که میخواید رو ببینید باید از قسمت Network توی بخش Inspect Element (در منوی راست کلیک) ببینید چه درخواستی به چه پیجی ارسال میشه و خروجیش چی هست (چون سایتهای بورس ثانیه ای درخواست میفرستن پیدا کردنش کار سختی نیست)
      4. شما هم همون درخواست رو بفرستین و خروجیش رو بگیرین (مثل سورسی که خدمتتون دادم) و بعد باید با روش های Parse کردن محتوای خروجی رو بسته به نوع خروجی با Json یا String پردازش کنید تا مطلب مد نظرتون رو بگیرید
      سلام مجدد دوست عزیز من،
      واقعا معذرت میخوام، من زیاد متوجه نمیشم، یک آموزشی هم دیدم (https://www.vba-market.com/vba-parse-json-to-extract-json-response-value) اما نتونستم با این روش قیمت آخرین معامله هیچ کدام از سررسید ها (http://cdn.ime.co.ir) را داخل اکسل وارد کنم، حتی فایل json اطلاعات از سایت (http://cdn.ime.co.ir) در قسمت Network مرورگر مشاهده کردم اما اصلا نمیشه، با روش قبلی هم که از تگ ها استفاده می کرد نتونستم چون یک تگ بیشتر نمی شد وارد کرد و نمی شد به عدد مدنظرم محدود کرد، قیمتی که من میخوام دریافت بشه را عکس از سورس سایت (http://cdn.ime.co.ir) گرفتم و پیوست کردم، میشه با استفاده از چند شرط و محدود کردن، این قیمت را دریافت کرد؟ یا با همون روش Parse کردن؟ واقعا ممنون میشم راهنمایی ام کنید دوست عزیزم، خیلی خیلی معذرت میخوام اگر میشه لطفا فایل نمونه اکسل را هم درست کنید، من از محیط VBA اصلا سر در نمیارم، بسیار از شما سپاسگزارم
      فایل های پیوست شده
      Last edited by mohammad735; 2019/07/12, 14:38.

      کامنت

      • mrhartsclube

        • 2017/11/15
        • 130
        • 81.00

        #18
        نوشته اصلی توسط mohammad735
        سلام مجدد دوست عزیز من،
        واقعا معذرت میخوام، من زیاد متوجه نمیشم، یک آموزشی هم دیدم (https://www.vba-market.com/vba-parse-json-to-extract-json-response-value) اما نتونستم با این روش قیمت آخرین معامله هیچ کدام از سررسید ها (http://cdn.ime.co.ir) را داخل اکسل وارد کنم، حتی فایل json اطلاعات از سایت (http://cdn.ime.co.ir) در قسمت Network مرورگر مشاهده کردم اما اصلا نمیشه، با روش قبلی هم که از تگ ها استفاده می کرد نتونستم چون یک تگ بیشتر نمی شد وارد کرد و نمی شد به عدد مدنظرم محدود کرد، قیمتی که من میخوام دریافت بشه را عکس از سورس سایت (http://cdn.ime.co.ir) گرفتم و پیوست کردم، میشه با استفاده از چند شرط و محدود کردن، این قیمت را دریافت کرد؟ یا با همون روش Parse کردن؟ واقعا ممنون میشم راهنمایی ام کنید دوست عزیزم، خیلی خیلی معذرت میخوام اگر میشه لطفا فایل نمونه اکسل را هم درست کنید، من از محیط VBA اصلا سر در نمیارم، بسیار از شما سپاسگزارم
        سلام دوست عزیز
        وبسایتی که ارسال کردین طبق تصویر زیر کار میکنه:
        Click image for larger version

Name:	Screenshot (2).png
Views:	1
Size:	86.7 کیلو بایت
ID:	135597
        هر بار که سایت ریفرش میشه 6 تا Request به آدرس http://cdn.ime.co.ir/Services/Fut_Li...etContractInfo میفرسته که دلیلش 6 تا جدول داخل صفحه ست که مجزا اطلاعاتشونو میگیره. هر جدول یه کد قرارداد داره که Request ها با Payload متناسب با همون به سرور ارسال میشن و یه JSON بعنوان Response دریافت میکنن که اطلاعات کل جدولو داره. مثلا اینجا برای این مثال شما توی تصویر ارسالیتون دنبال مقداری بودین که کد قراردادش SAFSH98 بود و طبق تصویری که فرستادم میشه جدول 5 و Payload ما میشه {"ContractCode":"SAFSH98"}.

        باز من داخل فایل JSON نگاه کردم دیدم اگه بازم مثل قبل با کاما جداش کنم آیتم 44 نوشته "LastTradedPrice"=128900 و خیلی راحت با حذف مقدار پشت مساوی 128900 رو داریم و ریختمش توی A1.

        اینم کدش:
        کد:
        [LEFT]Sub GetLTP()
            Dim WebClient As WinHttp.winhttprequest
            Set WebClient = New WinHttp.winhttprequest
            Dim Payload As String
            Payload = "{'ContractCode':'SAFSH98'}"
            With WebClient
                .Open "POST", _
                    "http://cdn.ime.co.ir/Services/Fut_Live_Loc_Service.asmx/GetContractInfo", _
                    False
                .setrequestHeader "Content-Type", "application/json"
                .send Payload
                .waitforresponse
            End With
            Cells(1, 1) = Replace(Split(WebClient.responsetext, ",")(44), """LastTradedPrice"":", "")
        End Sub
        [/LEFT]
        فایل های پیوست شده
        Last edited by mrhartsclube; 2019/07/14, 06:50.
        [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]

        کامنت

        • mohammad735

          • 2019/05/22
          • 26

          #19
          نوشته اصلی توسط mrhartsclube
          سلام دوست عزیز
          وبسایتی که ارسال کردین طبق تصویر زیر کار میکنه:
          [ATTACH=CONFIG]19402[/ATTACH]
          هر بار که سایت ریفرش میشه 6 تا Request به آدرس http://cdn.ime.co.ir/Services/Fut_Li...etContractInfo میفرسته که دلیلش 6 تا جدول داخل صفحه ست که مجزا اطلاعاتشونو میگیره. هر جدول یه کد قرارداد داره که Request ها با Payload متناسب با همون به سرور ارسال میشن و یه JSON بعنوان Response دریافت میکنن که اطلاعات کل جدولو داره. مثلا اینجا برای این مثال شما توی تصویر ارسالیتون دنبال مقداری بودین که کد قراردادش SAFSH98 بود و طبق تصویری که فرستادم میشه جدول 5 و Payload ما میشه {"ContractCode":"SAFSH98"}.

          باز من داخل فایل JSON نگاه کردم دیدم اگه بازم مثل قبل با کاما جداش کنم آیتم 44 نوشته "LastTradedPrice"=128900 و خیلی راحت با حذف مقدار پشت مساوی 128900 رو داریم و ریختمش توی A1.

          اینم کدش:
          کد:
          [LEFT]Sub GetLTP()
              Dim WebClient As WinHttp.winhttprequest
              Set WebClient = New WinHttp.winhttprequest
              Dim Payload As String
              Payload = "{'ContractCode':'SAFSH98'}"
              With WebClient
                  .Open "POST", _
                      "http://cdn.ime.co.ir/Services/Fut_Live_Loc_Service.asmx/GetContractInfo", _
                      False
                  .setrequestHeader "Content-Type", "application/json"
                  .send Payload
                  .waitforresponse
              End With
              Cells(1, 1) = Replace(Split(WebClient.responsetext, ",")(44), """LastTradedPrice"":", "")
          End Sub
          [/LEFT]
          سلام دوست عزیز من، واقعا ازتون ممنونم، سپاسگزارم که راهنمایی ام کردید، ممنونم

          کامنت

          • mohammad735

            • 2019/05/22
            • 26

            #20
            دوست عزیز من، واقعا علاقه مند شدم که vba اکسل را به صورت کامل کامل مثل شما یاد بگیرم، میشه لطفا راهنمایی ام کنید که چطور یاد بگیرم؟

            کامنت

            • mrhartsclube

              • 2017/11/15
              • 130
              • 81.00

              #21
              سلام دوست عزیز
              من که چیزی بلد نیستم چون قبلا VB6 کار کردم و الانم CSharp کار میکنم نسبتا syntax شون مثل همه، مخصوصا وقتی یه رفرنس رو بصورت مشترک بین VB و CSharp داریم کد نویسیشونم خیلی شبیه هم میشه.
              نمیدونم بگم از کجا شروع کنید ولی نظر شخصیم اینه که یه پروژه رو برای تمرین شروع کنید و رفع اشکال کنید تا محیطش براتون آشنا بشه. کم کم بسته به نیازتون میتونید چیزای دیگه هم یاد بگیرید.
              منم اگه چیزی بلدم لطف خداست و هیچی از خودم ندارم.
              [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]

              کامنت

              • mohammad735

                • 2019/05/22
                • 26

                #22
                نوشته اصلی توسط mrhartsclube
                سلام دوست عزیز
                من که چیزی بلد نیستم چون قبلا VB6 کار کردم و الانم CSharp کار میکنم نسبتا syntax شون مثل همه، مخصوصا وقتی یه رفرنس رو بصورت مشترک بین VB و CSharp داریم کد نویسیشونم خیلی شبیه هم میشه.
                نمیدونم بگم از کجا شروع کنید ولی نظر شخصیم اینه که یه پروژه رو برای تمرین شروع کنید و رفع اشکال کنید تا محیطش براتون آشنا بشه. کم کم بسته به نیازتون میتونید چیزای دیگه هم یاد بگیرید.
                منم اگه چیزی بلدم لطف خداست و هیچی از خودم ندارم.
                خیلی ممنونم دوست عزیز من،
                خیلی ببخشید، فقط یک مشکل دیگه داشتم، وقتی بعد از چند دقیقه start داره مثلا هر 5 ثانیه قیمت یک نماد از سایت tsetmc.com بروز میشه، ارور میاد رو صفحه (عکس را پیوست کردم) اما بعد از چند ثانیه که دوباره start می زنم درست میشه و شروع به بروز کردن میکنه، واقعا ممنون میشم بررسی کنید دوست عزیزم و خیلی معذرت میخوام که سوالات زیاد پرسیدم
                فایل های پیوست شده
                Last edited by mohammad735; 2019/07/15, 09:15.

                کامنت

                • mohammad735

                  • 2019/05/22
                  • 26

                  #23
                  تمنا می کنم من را ببخشید دوست عزیز من، چند سوال دیگه هم داشتم و البته انشاالله فکر می کنم دیگه سوالی نداشته باشم،
                  1.یکی این که آیا راهی هست تا اکسل پس از دریافت اطلاعات لحظه ای هر ثانیه هنگ نکند؟ چون وقتی هر به یک ثانیه اکسل قیمت ها را می گیره (البته دو قیمت همزمان دریافت می کنم) پس از چند ثانیه اکسل هنگ می کنه و خارج میشه، البته وقتی زمان یک ثانیه را به پنج ثانیه تغییر می دهم، یعنی هر پنج ثانیه دو قیمت را بروز می کند، این ارور خیلی کمتر است و بعد از چندین دقیقه اتفاق می افتد و البته بعضی وقت ها هم اصلا این ارور نمیاد،
                  2.و سوال بعدی من هم این است که چطور می تونم تاریخچه از تغییرات قیمتی که در سلول وارد میشه را درست کنم؟ یعنی به دو صورت یکی این که مثلا انتخاب کنم هر چند دقیقه آخرین قیمتی که در اکسل درج شده را در یک سلول جداگانه با تاریخ و ساعت دقیق ثبت کنه و یکی هم این که چطور سقف و کف قیمت را از اطلاعات لحظه ای بدست بیارم، یعنی مثلا اگر یک ساعت اکسل Start بوده و داشته قیمت لحظه ای دریافت می کرده، تو این مدت بالاترین و پایین ترین قیمت چند بوده و این دو را در دو سلول درج کنه همراه با ساعت و تاریخ دقیق،
                  3.و خیلی عذر میخوام، می خواستم بدونم راهی هست که با کد هایی که شما دوست عزیز من لطف کردید و راهنمایی ام کردید که انشاالله خداوند هر چه میخواهید به شما بدهد و من هم شما را دعا می کنم درست کردید، آن ها را ترکیب کرد و مثلا دو قیمت یا سه قیمت به صورت همزمان ترکیبی از سایت "Tsetmc.com" و "cdn.ime.co.ir" دریافت کنه و یک دکمه Start و Stop برای دریافت اطلاعات لحظه ای وجود داشته باشه؟ چون خودم مثلا دو قیمت از سایت "Tsetmc.com" دریافت می کنم و هر کدام را در یک Module ذخیره می کنم و یک قیمت را هم از سایت "cdn.ime.co.ir" دریافت می کنم که اون هم در یک Module دیگر ذخیره می کنم، به این صورت من سه تا دکمه Start و سه دکمه Stop دارم و باید هر کدام را یکی یکی Start کنم و شاید هم به خاطر همین ارور میاد و البته اون اروری که در بالا پیوست کردم وقتی Debug می کنم فقط روی اطلاعات سایت "Tsetmc.com" هست و اروری که پس از چندین دقیقه از اجرای همزمان دو یا چند قیمت که از سایت "cdn.ime.co.ir" روی صفحه میاد "Timeout Error" هست،
                  واقعا ممنونم از شما دوست عزیز من اگر میشه لطفا یک اکسل نمونه هم ارسال کنید، من واقعا از شما ممنونم

                  کامنت

                  • mrhartsclube

                    • 2017/11/15
                    • 130
                    • 81.00

                    #24
                    نوشته اصلی توسط mohammad735
                    خیلی ممنونم دوست عزیز من،
                    خیلی ببخشید، فقط یک مشکل دیگه داشتم، وقتی بعد از چند دقیقه start داره مثلا هر 5 ثانیه قیمت یک نماد از سایت tsetmc.com بروز میشه، ارور میاد رو صفحه (عکس را پیوست کردم) اما بعد از چند ثانیه که دوباره start می زنم درست میشه و شروع به بروز کردن میکنه، واقعا ممنون میشم بررسی کنید دوست عزیزم و خیلی معذرت میخوام که سوالات زیاد پرسیدم
                    سلام عزیز
                    خواهش می کنم. راجع به این ارور اگه لطف کنید خطی که روش ارور میده رو بدین ممنون میشم چون روی سیستم من مشکلی نداره.

                    نوشته اصلی توسط mohammad735
                    تمنا می کنم من را ببخشید دوست عزیز من، چند سوال دیگه هم داشتم و البته انشاالله فکر می کنم دیگه سوالی نداشته باشم،
                    1.یکی این که آیا راهی هست تا اکسل پس از دریافت اطلاعات لحظه ای هر ثانیه هنگ نکند؟ چون وقتی هر به یک ثانیه اکسل قیمت ها را می گیره (البته دو قیمت همزمان دریافت می کنم) پس از چند ثانیه اکسل هنگ می کنه و خارج میشه، البته وقتی زمان یک ثانیه را به پنج ثانیه تغییر می دهم، یعنی هر پنج ثانیه دو قیمت را بروز می کند، این ارور خیلی کمتر است و بعد از چندین دقیقه اتفاق می افتد و البته بعضی وقت ها هم اصلا این ارور نمیاد،
                    راه که برای هرچیزی زیاده ولی فکر میکنم یکی مشکل از اکسلای ما و ناهمخونیشون با سیستمامونه، یکی هم اینکه شاید بهتر باشه اون سیستم تکرار رو از یه کد دیگه استفاده کنم که فشار کمتر به سیستم بیاد. البته چون هر ثانیه ست شاید با تایمرای دیگه چون همزمان گذاشتید Conflict داره، باید همه یکی بشن.

                    نوشته اصلی توسط mohammad735
                    2.و سوال بعدی من هم این است که چطور می تونم تاریخچه از تغییرات قیمتی که در سلول وارد میشه را درست کنم؟ یعنی به دو صورت یکی این که مثلا انتخاب کنم هر چند دقیقه آخرین قیمتی که در اکسل درج شده را در یک سلول جداگانه با تاریخ و ساعت دقیق ثبت کنه و یکی هم این که چطور سقف و کف قیمت را از اطلاعات لحظه ای بدست بیارم، یعنی مثلا اگر یک ساعت اکسل Start بوده و داشته قیمت لحظه ای دریافت می کرده، تو این مدت بالاترین و پایین ترین قیمت چند بوده و این دو را در دو سلول درج کنه همراه با ساعت و تاریخ دقیق،
                    شما میتونید هربار که ریفرش میکنه بجای اینکه سلول A1 رو باز مقدار دهی کنید توی یه شیت دیگه بذاریدش و هر بارش رو جدا ذخیره کنید یه تایم هم توی سلول جلوش بذارید. گرچه خیلی رکورد میشه. اگه ایده ای برای ذخیره کردن دارید بگین تا ببینیم چکار میشه.

                    نوشته اصلی توسط mohammad735
                    3.و خیلی عذر میخوام، می خواستم بدونم راهی هست که با کد هایی که شما دوست عزیز من لطف کردید و راهنمایی ام کردید که انشاالله خداوند هر چه میخواهید به شما بدهد و من هم شما را دعا می کنم درست کردید، آن ها را ترکیب کرد و مثلا دو قیمت یا سه قیمت به صورت همزمان ترکیبی از سایت "Tsetmc.com" و "cdn.ime.co.ir" دریافت کنه و یک دکمه Start و Stop برای دریافت اطلاعات لحظه ای وجود داشته باشه؟ چون خودم مثلا دو قیمت از سایت "Tsetmc.com" دریافت می کنم و هر کدام را در یک Module ذخیره می کنم و یک قیمت را هم از سایت "cdn.ime.co.ir" دریافت می کنم که اون هم در یک Module دیگر ذخیره می کنم، به این صورت من سه تا دکمه Start و سه دکمه Stop دارم و باید هر کدام را یکی یکی Start کنم و شاید هم به خاطر همین ارور میاد و البته اون اروری که در بالا پیوست کردم وقتی Debug می کنم فقط روی اطلاعات سایت "Tsetmc.com" هست و اروری که پس از چندین دقیقه از اجرای همزمان دو یا چند قیمت که از سایت "cdn.ime.co.ir" روی صفحه میاد "Timeout Error" هست،
                    واقعا ممنونم از شما دوست عزیز من اگر میشه لطفا یک اکسل نمونه هم ارسال کنید، من واقعا از شما ممنونم
                    هرکاری که میکنم وظیفه ست و لازم به تشکر نیست، لطف دارین. اینا باید یکی بشن، البته فقط باید یه جا کپی بشن. تایمرا با هم برخورد پیدا میکنن و وقتی یه request میره وسطش بعدیو میفرسته و Time out میده چون قبلی رو نمیتونه بگیره.
                    شما امر بفرمایید چی و کجا من در خدمتم آخه فایلهاشو ندارم نمیدونم روی کدوم داریم بحث میکنیم و من 2 تا بیشتر ندادم، سومی کدومه؟!
                    [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]

                    کامنت

                    • mohammad735

                      • 2019/05/22
                      • 26

                      #25
                      نوشته اصلی توسط mrhartsclube
                      سلام عزیز
                      خواهش می کنم. راجع به این ارور اگه لطف کنید خطی که روش ارور میده رو بدین ممنون میشم چون روی سیستم من مشکلی نداره.
                      سلام دوست عزیز من، انشاالله حالتون عالی باشه، دقیق ندیدم ولی فکر می کنم هنگام Debug این خط را نشان داد



                      نوشته اصلی توسط mrhartsclube
                      راه که برای هرچیزی زیاده ولی فکر میکنم یکی مشکل از اکسلای ما و ناهمخونیشون با سیستمامونه، یکی هم اینکه شاید بهتر باشه اون سیستم تکرار رو از یه کد دیگه استفاده کنم که فشار کمتر به سیستم بیاد. البته چون هر ثانیه ست شاید با تایمرای دیگه چون همزمان گذاشتید Conflict داره، باید همه یکی بشن.
                      چطور میشه این مورد را درست کرد؟ واقعا ممنون میشم راهنمایی ام کنید دوست عزیز من و اگر نیاز هست کد جدید برای تکرار بنویسید، فایل اکسل مثال را پیوست کردم، میشه تمام این قیمت ها را در یک Module نوشت و یک دکمه Start و Stop باشه و برای تکرار کردن ماکرو اگر نیاز هست یک کد جدید نوشت تا به سیستم فشار نیاد و هنگ نکنه؟


                      نوشته اصلی توسط mrhartsclube
                      شما میتونید هربار که ریفرش میکنه بجای اینکه سلول A1 رو باز مقدار دهی کنید توی یه شیت دیگه بذاریدش و هر بارش رو جدا ذخیره کنید یه تایم هم توی سلول جلوش بذارید. گرچه خیلی رکورد میشه. اگه ایده ای برای ذخیره کردن دارید بگین تا ببینیم چکار میشه.
                      چطوری می تونم کاری کنم تا هر بار که رفرش میکنه قیمت ها را همراه با ساعت دقیق ثبت کنه؟ میشه مثلا هر 5 دقیقه این کار را کرد؟ کاری که دقیق میخوام انجام بدم اینه که وقتی دکمه Start را زدم که مثلا هر ثانیه رفرش بشه ابتدا بالاترین قیمتی که دریافت شده را در یک سلول ثبت کنه و سپس پایین ترین قیمتی که دریافت شده را در یک سلول دیگه ثبت کنه با تاریخ و ساعت دقیق، بعد وقتی که قیمت داره بین حداکثر و حداقل قیمتی که در آن دو سلول ثبت شده نوسان می کنه، مثلا هر 5 دقیقه قیمت را در یک رنج سلول ثبت کنه، دقیقا این کار میخوام انجام بدم،
                      البته خیلی جستجو کردم و یک کد خیلی ساده پیدا کردم و خودم هم کمی آن را ویرایش کردم، کد به این صورت هست اما نمیدونم چطور پایین ترین قیمت را در یک سلول ثبت کنم، چون با این روش سقف قیمت در یک سلول ثبت میشه اما کف قیمت متغیر هست، اصلا یک مورد خیلی مهم این که من تا دیشب می تونستم این کد را در قسمت Sheet1 بنویسم و استفاده کنم اما الان نمیشه و وقتی عددی را در سلول مشخص شده وارد می کنم سریع ارور میده و اکسل بسته میشه، فقط می تونم این کد را با نوشتن در Module استفاده کنم که در واقع باید در Sheet1 نوشته شود، درسته؟ چطور این مشکل را حل کنم؟
                      کد PHP:
                      Private Sub Worksheet_Change(ByVal Target As Range)

                      CurrentValue Range("A1").Value
                      MaxValue 
                      Range("A2").Value
                      MinValue 
                      Range("A2").Value

                      If CurrentValue MaxValue Then
                      Range
                      ("A2").Value CurrentValue
                      End 
                      If

                      If 
                      CurrentValue MinValue Then
                      Range
                      ("A3").Value CurrentValue
                      End 
                      If

                      End Sub 
                      نوشته اصلی توسط mrhartsclube
                      هرکاری که میکنم وظیفه ست و لازم به تشکر نیست، لطف دارین. اینا باید یکی بشن، البته فقط باید یه جا کپی بشن. تایمرا با هم برخورد پیدا میکنن و وقتی یه request میره وسطش بعدیو میفرسته و Time out میده چون قبلی رو نمیتونه بگیره.
                      شما امر بفرمایید چی و کجا من در خدمتم آخه فایلهاشو ندارم نمیدونم روی کدوم داریم بحث میکنیم و من 2 تا بیشتر ندادم، سومی کدومه؟!
                      سه تا قیمت گرفتم که دو تا از سایت tsetmc.com هست و یکی هم از سایت cdn.ime.co.ir، فایل نمونه را پیوست کردم، واقعا ممنون میشم راهنمایی کنید که چطور این سه Module را در یک Module ادغام کنم و اگر میشه کاری کرد که هر ثانیه رفرش بشه و اکسل هنگ نکنه،

                      خیلی ببخشید اگر میشه لطفا یک فایل نمونه هم درست کنید، بسیار سپاسگزارم دوست عزیز من
                      فایل های پیوست شده
                      Last edited by mohammad735; 2019/07/17, 01:48.

                      کامنت

                      • mohammad735

                        • 2019/05/22
                        • 26

                        #26
                        دوست عزیز من؟ راهنمایی ام می کنید؟ واقعا ممنونم

                        کامنت

                        • amirbroker1
                          • 2019/11/01
                          • 3

                          #27
                          نوشته اصلی توسط mrhartsclube
                          خب یکم بیشتر توی سایت دقت کردم دیدم برای instinfofast.aspx دائما داره Request میفرسته و توی Response برگشتی آیتم سوم (با کاما جدا شده) دقیقا همون چیزیه که شما میخواید. پس کد به این شکل شد:

                          کد 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"URLFalse
                              Req
                          .send
                              Res 
                          StrConv(Req.responseBodyvbUnicode)
                              
                              
                          Cells(11) = 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 

                          و برای راحتی کار دوتا Shape روی صفحه بکشید و یکیشون رو روش بنویسید شروع و دیگری پایان. به شروع ماکروی Send_Get_Req رو بدین و به پایان Stop_Get_Req رو بدین. برای شروع یه بار روی پایان بزنید و بعد شروع رو بزنید. هروقت خواستید پایان رو بزنید که ریفرش متوقف بشه.

                          فایل رو پیوست کردم


                          سلام کار شما بسیار قابل تقدیره و تشکر است در این زمینه من سوالی داشتم:
                          فرض بفرمایید من این ماکرو را برای URL های بیشتری می خواهم استفاده کنم و از هر صفحه ۴ عدد را می خواهم
                          مثلا برای صفحه http://www.tsetmc.com/tsev2/data/ins...44337450&c=27+ یک عدد در سل A1 بنشیند عدد دیگری در سل B1 عدد سوم در سل C1 و بلاخره چهارمین عدد در سل D1 قرار بگیرد
                          همین رویه هم برای صفحه http://www.tsetmc.com/tsev2/data/ins...93447489&c=34+ چهار عدد به ترتیب در سلهای A2 , B2 , C2 و D2 قرار گیرد
                          و همچنین http://www.tsetmc.com/tsev2/data/ins...75480091&c=64+ هم در ردیف سوم به همان ترتیب بالا قرار داده شود
                          همچنین این ماکرو هر ۵ دقیقه یکبار این کار را انجام دهد(تا زمانیکه دکمه STOP زده شود)
                          ممنوم می شوم راهنمایی بفرمایید

                          کامنت

                          • mrhartsclube

                            • 2017/11/15
                            • 130
                            • 81.00

                            #28
                            سلام به دوستان عزیز جامعه بورس و فرابورس ایران

                            من توی این تاپیک هر توضیحی دادم کاملا کافی هست برای هر کاری که بخواین بکنین اما اگه نیاز به آموزش بیشتر دارین این تاپیک (آموزش کامل اتوماسیون وب و Web scraping
                            https://r.tapatalk.com/shareLink/top...ink_source=app) یه آموزش انگلیسی هست ولی کاملا دریافت و دستکاری اطلاعات وب رو از طریق اکسل آموزش میده.

                            پیشنهاد میکنم باهاش تمرین کنید تا اصول برنامه نویسی VBA رو یاد بگیرین، ولی اگه دنبال حل مشکل بدون یادگیری هستین درخواستتون رو بدین و کد تحویل بگیرین، چون معمولا توضیحاتی که داده میشه جواب سوالاتی که بعدا پرسیده میشه هم هست.

                            موفق و موید باشید


                            Sent from my iPhone using Tapatalk
                            [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]

                            کامنت

                            • mrhartsclube

                              • 2017/11/15
                              • 130
                              • 81.00

                              #29
                              سلام دوستان عزیز
                              لینکی که گذاشته بودم با برنامه tapatalk بوده و برای ریدایرکت کردن نیاز به فیلترشکن داره. برای همین لینک تاپیک رو بدون نیاز به ریدایرکشن مجددا میذارم، فایل همچنان سر جاش هست و قابل دانلود:

                              Last edited by mrhartsclube; 2020/12/01, 22:23.
                              [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]

                              کامنت

                              چند لحظه..