refresh کردن خودکار Pivot table از طریق ماکرو

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Javid Mokhtari
    مدير تالار ويژوال بيسيك

    • 2012/01/16
    • 1212
    • 73.00

    refresh کردن خودکار Pivot table از طریق ماکرو

    با سلام.
    یکی از مشکلاتی که در استفاده از Pivot table داریم این است که با هر بار ویرایش یا افزودن اطلاعات یا هر تغییر دیگر در محتویات منبع Pivot table ، آن تغییرات همزمان در Pivot table به روز آوری نمی شود و باید بصورت دستی Refresh شود تا تغییرات در Pivot table اعمال گردد.
    و در گزارش گیری ممکن است Refresh کردن Pivot table از یادمان برود و به روز آوری دستی کار اعصاب خورد کنی است. اما می توان با کمک گرفتن از برنامه نویسی این مشکل رو حل کرد به مثال زیر توجه کنید :

    فرض کنید یک شیت به نام sheet1 داریم که در آن : ردیف - نام - نام خانوداگی و سن افراد را نوشته ایم.حال ما از این اطلاعات افراد یک گزارش پویا به صورت pivot table (به نام Pivot table1) در شیتی به نام sheet4 ایجاد کرده ایم.حال اگر بخواهیم Pivot table موجود در sheet4 با هر بار باز شدن این شیت، Pivot table به صورت خودکار به روز رسانی شود ، می شود کد زیر را نوشت :

    Private Sub Worksheet_Activate()
    PivotTables("PivotTable1").PivotCache.Refresh
    End Sub

    یا می توان آن را به یک CommandButton1 اختصاص داد :

    Private Sub CommandButton1_Click()
    Application.Sheets("sheet4").PivotTables("PivotTab le1").PivotCache.Refresh
    End Sub

    البته کد های بالا برای sheet و Pivot table ثابتی است که می توان آنها را نیز با تعریف متغیر ها ، متغیر کرد(فعلاً اینو داشته باشین).
    [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
    بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

    شرکت در دوره:
    [/FONT][/SIZE]
    [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
    [/B][/FONT][/SIZE]
    [/CENTER]
    [/INDENT]
    [/FONT]
  • neda-a

    • 2014/11/25
    • 53

    #2
    ممنون از راهنمایی خوبتون فقط یه سوال من این ماکرو را نوشتم و اجرا هم شد اما وقتی فایلم را روی سیستم دیگه ای باز میکنم ماکرو کار نمیکنه چرا؟

    کامنت

    • misammisam
      مدير تالار حسابداری و اکسل

      • 2014/04/04
      • 892
      • 64.00

      #3
      با سلام
      احتمالا اجرای ماکروهای شما در سیستم مورد نظرتون بسته است باید اجازه اجرا به ماکروها بدید ، از مسیر زیر :
      Excel Options/Trust Center/Turust Center Settings/Macro Settings/Enable all macros
      باید این گزینه رو فعال و ok کنید .
      [CENTER][SIGPIC][/SIGPIC]
      [/CENTER]
      [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
      [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
      [/CENTER]
      [/INDENT]

      [/FONT][/FONT][/FONT][/FONT][/FONT]
      [/CENTER]

      کامنت

      • neda-a

        • 2014/11/25
        • 53

        #4
        تنظیماتی که گفته بودید را انجام دادم ,ولی بازم روی سیستم های دیگه انجام نشد حتما من یه جایی اشتباه انجام میدم- خیلی با ماکرونویسی آشنا نیستم
        روند کاری که انجام دادم اینه
        -DEVELOPER-insert- command button-writing code-save
        ممنون میشم راهنمایی کنید

        کامنت

        • misammisam
          مدير تالار حسابداری و اکسل

          • 2014/04/04
          • 892
          • 64.00

          #5
          امکانش هست فایلتونو اینجا بزارید تا بررسی کنیم .
          [CENTER][SIGPIC][/SIGPIC]
          [/CENTER]
          [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
          [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
          [/CENTER]
          [/INDENT]

          [/FONT][/FONT][/FONT][/FONT][/FONT]
          [/CENTER]

          کامنت

          • iranweld

            • 2015/03/29
            • 3341

            #6
            نوشته اصلی توسط neda-a
            تنظیماتی که گفته بودید را انجام دادم ,ولی بازم روی سیستم های دیگه انجام نشد حتما من یه جایی اشتباه انجام میدم- خیلی با ماکرونویسی آشنا نیستم
            روند کاری که انجام دادم اینه
            -DEVELOPER-insert- command button-writing code-save
            ممنون میشم راهنمایی کنید
            با سلام

            بایستی نام شیت ها با نام شیت های تعریف شده در ماکرو با هم یکی باشد در صورت ایجاد دو جدول pivot table در یک شیت یا شیت دیگر دستور داخل ماکرو برای pivot table دوم نیز بایستی تعریف گردد

            Click image for larger version

Name:	Untitled.png
Views:	1
Size:	233.3 کیلو بایت
ID:	126697
            فایل های پیوست شده

            کامنت

            • neda-a

              • 2014/11/25
              • 53

              #7
              خیلی ممنون عالی بود حل شد فکر کنم اشکال من این بود اولا کد را در شیتی که خود جدول pivot بود مینوشتم بعدم احتمالا با فرمت xlsm ذخیره نمیکردم . این دو مورد را تغییر دادم و درست شد.
              مرســـــــی
              Last edited by neda-a; 2015/07/21, 16:05.

              کامنت

              • mina_tmba
                • 2015/08/15
                • 1

                #8
                سلام. من یک ورک شیت دارم که از جدولش یک pivottable گرفتم ولی وقتی یک سطر اطلاعات جدید به داده هام اضافه میکنم، حتی با رفرش کردن هم اطلاعات جدیدم در pivottable بروز نمیشه. میتونید لطفا کمکم کنید؟

                کامنت

                • iranweld

                  • 2015/03/29
                  • 3341

                  #9
                  با سلام
                  لطفا نمونه فایل خود را ضمیمه کنید تا بررسی شود

                  کامنت

                  • abolfazl861
                    • 2016/08/09
                    • 1

                    #10
                    سلام
                    من یه اکسل دارم که دارای تعداد زیادی tabel که از روی اون ها چندین
                    Pivot table تشکیل می شه که نمونه پیوست کمکم نمی کنه و بهش هم خیلی احتیاج دارم تا مدام رفرش بشه خواهشن کمکم کنید


                    کامنت

                    • amir_ts

                      • 2015/03/17
                      • 1247

                      #11
                      با سلام
                      دو روش رو امتحان کنید.

                      کد PHP:
                       ActiveWorkbook.RefreshAll 
                      کد:
                      [LEFT]
                      Sub AllWorkbookPivots()
                       
                      Dim pt As PivotTable
                      Dim ws As Worksheet
                       
                          For Each ws In ActiveWorkbook.Worksheets
                              For Each pt In ws.PivotTables
                                          pt.RefreshTable
                              Next pt
                          Next ws
                       
                      End Sub
                      [/LEFT]
                      [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

                      کامنت

                      چند لحظه..