PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : به روز شدن خودکار pivot table در شیت قفل شده



panahi88
2015/02/25, 15:11
با سلام و عرض ادب خدمت سروران گرامی
دوستان چطور میشه وقتی روی یک شیت که دارای pivot table است کلیک کنیم ، pivot table به صورت خود کار آپدیت شود.
من قبلا از این کد استفاده میکردم و جواب هم میداد:


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


ولی الان هم شیت دارای پسورد هست و هم فایل اکسل مرجع اطلاعات.
ممنون از همگی...

khakzad
2015/02/25, 16:30
اول کدتونunprotect کنید
بعد رفرش کنید
بعد protect

panahi88
2015/02/28, 09:07
اول کدتونunprotect کنید
بعد رفرش کنید
بعد protect

خیلی ممنون جناب خاکزاد
برای unprotect کردن شیت زیاد مشکلی ندارم ولی بعد از unprotect کردن شیت و بعد از refresh کردن اطلاعات pivot table از فایل اکسلی که توی سرور هست خونده میشه و فایل برای خوانده شدن احتیاج به پسورد داره
ممنون میشم کمی بیشتر راهنمایی کنید.

khakzad
2015/02/28, 09:33
داخل کدتون، اول از همه یکبار unprotect کنید
بعد هر کدی که دارین اجرا کنید
اینطوری بصورت دستی لازم نیست پسورد شیت رو بزنید
اول کدتون بنویسید:

Sheet1.Unprotect (123)

panahi88
2015/02/28, 10:28
خیلی ممنون جناب خاکزاد
برای unprotect کردن شیت زیاد مشکلی ندارم ولی بعد از unprotect کردن شیت و بعد از refresh کردن اطلاعات pivot table از فایل اکسلی که توی سرور هست خونده میشه و فایل برای خوانده شدن احتیاج به پسورد داره
ممنون میشم کمی بیشتر راهنمایی کنید.

درسته
من منظورم این نبود که دستی Unprotect کنم
با کد زیر مراحل درست انجام میشه


Private Sub Worksheet_Activate()
Sheet2.Unprotect (123)
PivotTables("PivotTable2").PivotCache.Refresh
Sheet2.Protect (123)
End Sub


مشکل اینجاست که موقع refresh اطلاعات از فایل دیگه ای خونده میشه که پسورد اون اکسل "ABC" هست.
و آدرس اون هم توی شبکه است (\\192.168.2.201\)
اینجا پسورد فایل رو ازم میپرسه
با چه دستوری میشه این مرحله رو رد کرد؟
امیدوارم منظورم رو رسونده باشم

panahi88
2015/03/01, 09:41
بزرگواران پیشنهادی ندارید؟

Ali Parsaei
2015/03/03, 14:06
بايد يک خط به کدتون اضافه کنيد که اون فايل رو هم باز کند مثلا" اگر فايل مرجع به نام TEST و روي درايو C باشد و رمزش هم ABC باشد کد به صورت زير خواهد بود:


Workbooks.Open Filename:="C:\TEST.XLSX", Password:="ABC"

براي آدرس شبکه
192.168.2.201 نمي دانم چطور مي شود، ولي يک کم روش کار کنيد فکر کنم بتوانيد درستش کنيد.

panahi88
2015/03/04, 09:28
بايد يک خط به کدتون اضافه کنيد که اون فايل رو هم باز کند مثلا" اگر فايل مرجع به نام TEST و روي درايو C باشد و رمزش هم ABC باشد کد به صورت زير خواهد بود:


Workbooks.Open Filename:="C:\TEST.XLSX", Password:="ABC"

براي آدرس شبکه
192.168.2.201 نمي دانم چطور مي شود، ولي يک کم روش کار کنيد فکر کنم بتوانيد درستش کنيد.


با تشکر از راهنمایی شما جناب پارسا
با کد زیر مشکل تقریبا حل شد:


Private Sub Worksheet_Activate()
Sheet2.Unprotect (123)
Workbooks.Open Filename:="\\192.168.2.199\Vendor List\Report.XLSX", Password:="ABC"
PivotTables("PivotTable2").PivotCache.Refresh
Workbooks("Report.XLSX").Close SaveChanges:=False
Sheet2.Protect (123)
End Sub


با این کار اکسل report یک بار باز میشه و اطلاعات داخلش خونده میشه و دوباره بدون save بسته میشه
اما همین باز شدن فایل reprot و اینکه کاربر فایل رو مشاهده میکنه زیاد جال نیست.
اگر راهی وجود داره که فایل اکسل موقع باز شدن دیده نشه (مثل زمانی که بصورت دستی به روزرسانی انجلم میشه) لطفا راهنمایی بفرمایید.
در غیر اینصورت که تیک حل شد را به موضوع بزنم.

mohamadali110
2015/03/04, 10:47
اين كدو به انتهاي كداتون اضافه كنين حل ميشه



Application.ScreenUpdating=False

براي كد قبل هم نيازي به پسورد وارد كردن نبود اگه از كد زير استفاده ميكردين


Application.DisplayAlerts = False

panahi88
2015/03/04, 11:44
من در نهایت یه button درست کردم با کد زیر و مشکام حل شد:
با تشکر فراوان از دوستان



Sub Update_me()
Sheet1.Unprotect (123)
Application.StatusBar = "Please be patient..."
Application.ScreenUpdating = False
Workbooks.Open Filename:="\\192.168.2.199\Vendor List\Report.XLSX", ReadOnly:=True, Password:="ABC"
Workbooks("New.xlsm").Activate
Worksheets("vendor").Activate
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Workbooks("Report.XLSX").Close SaveChanges:=False
Application.StatusBar = " items done."
Sheet1.Protect (123)
End Sub


باز اگه کد قابل اصلاح بود حتما بفرمایید...

Ali Parsaei
2015/03/04, 12:12
فکر کنم فقط يک چيز کم دارد، دست آخر دوباره بايد ScreenUpdating را فعال کنيد، يعني:


Application.ScreenUpdating = True

Ali Parsaei
2015/03/04, 12:17
براي كد قبل هم نيازي به پسورد وارد كردن نبود اگه از كد زير استفاده ميكردين


Application.DisplayAlerts = False

من امتحان کردم نشد، فکر کنم پسورد را حتما" بخواهد، وگرنه همه فايلهاي محافظت شده اکسل را با يک خط کد مي شد باز کرد!،