پکیج آموزشی ایجاد فایل چندکاربره با سطح دسترسی مشخص

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

  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~M*E*H*D*I~
    فایل رو دیدم
    ببینید قاعده نامگذاری به این شکل بود که فرضا QC یک کاربر باشه در این صورت یوزرنیم QC و شیتهای مربوطه QC-1,QC-2,... نامگذاری بشند بقیه یوزرها هم به همین ترتیب و اگر شیتی مثل dashboard اضافه میکنید که شیت کاربری نیست در کد زیر استثناء بشه تا در شرط نامگذاری لحاظ نشه


    کد PHP:
    If ws.Name <> "Welcome" And ws.Name <> "Protectdata" And ws.Name <> "Dashboard" Then 
    ممنونم بسیار خوب بود من درست متوجه نشده بودم
    فقط در ارتباط با ساخت فرم ها برای هر یوزر مشکل دارم در قسمت فرم های vba مطرح کردم ولی جوابی نگرفتم

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    نوشته اصلی توسط nazi nazi
    فرستاده شد
    فایل رو دیدم
    ببینید قاعده نامگذاری به این شکل بود که فرضا QC یک کاربر باشه در این صورت یوزرنیم QC و شیتهای مربوطه QC-1,QC-2,... نامگذاری بشند بقیه یوزرها هم به همین ترتیب و اگر شیتی مثل dashboard اضافه میکنید که شیت کاربری نیست در کد زیر استثناء بشه تا در شرط نامگذاری لحاظ نشه


    کد PHP:
    If ws.Name <> "Welcome" And ws.Name <> "Protectdata" And ws.Name <> "Dashboard" Then 

    Leave a comment:


  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~M*E*H*D*I~
    ایمیل کنید فایل رو برام تا چک کنم

    mehdi.vatanparast@exceliran.com
    فرستاده شد

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    نوشته اصلی توسط nazi nazi
    نمیشه
    حتی یوزر جدید هم ساختم باز وارد یوزر ها نمیشه
    ایمیل کنید فایل رو برام تا چک کنم

    mehdi.vatanparast@exceliran.com

    Leave a comment:


  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~M*E*H*D*I~

    خب شما باید شیت هارو به صورت زیر نام گذاری کنید
    qc-1
    pm-1
    factory-1
    اگر qc شیت دیگه ای نیاز داشت qc-2 و....
    نمیشه
    حتی یوزر جدید هم ساختم باز وارد یوزر ها نمیشه

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    نوشته اصلی توسط nazi nazi
    qa
    qc
    pm
    factory
    اینها ار گذاشتم ممکنه باز واحد های دیگه ای اضافه بشه

    خب شما باید شیت هارو به صورت زیر نام گذاری کنید
    qc-1
    pm-1
    factory-1
    اگر qc شیت دیگه ای نیاز داشت qc-2 و....

    Leave a comment:


  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~m*e*h*d*i~
    نام کاربری چی گذاشتید؟
    qa
    qc
    pm
    factory
    اینها ار گذاشتم ممکنه باز واحد های دیگه ای اضافه بشه

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    نوشته اصلی توسط nazi nazi
    سلام
    ممنون از جوابتون
    من این کارو کردم ولی یوزر ه دیگه باز نمیشدن
    البته من یوزرهای جدید با نامهای دیگه ساخته بودم مثلا qa یا qc
    ولی نشد اصلا باز نمشد و فقط ادمین باز میشد
    نام کاربری چی گذاشتید؟

    Leave a comment:


  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~M*E*H*D*I~
    درود

    در خصوص سوالی که دوستان مطرح کردند مبنی بر اینکه برای کاربر بیش از یک شیت در نظر بگیریم دو راهکار به ذهنم رسید
    1- تعیین شیت های هر کاربر در شیت protectdata به نحوی که با پیمایش ردیف هر کاربر شیت مربوطه باز بشه
    2- استفاده از یک قاعده نامگذاری برای شیت ها

    کد زیر برای راه حل دوم نوشته شده دوستان باید این کد رو جایگزین کدی که برای کلید login یوزر فرم یک نوشته شده کنند


    کد PHP:
    Private Sub CommandButton1_Click()
    Dim PassWord As String
    Dim user 
    As String
    Dim ws 
    As Worksheet
    user 
    = ComboBox1.Value
    PassWord 
    = TextBox1.Value
    If user = "" Or PassWord = "" Then
    MsgBox 
    "Enter name and password"
    Exit Sub
    End 
    If
    If 
    PassWord = WorksheetFunction.VLookup(user, Range("List"), 2, 0) Then

    For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Welcome" And ws.Name <> "Protectdata" Then
    On Error 
    GoTo handler
    If user = Mid(ws.Name, 1, Application.WorksheetFunction.Find("-", ws.Name, 1) - 1) Then
    Sheets
    (ws.Name).Visible = xlSheetVisible
    End 
    If
    End If
    handler:
    If 
    Err = 1004 Then
    MsgBox 
    "The name of sheet is wrong"
    Exit Sub
    End 
    If
    Next
    MsgBox 
    "Password Accepted"
    UserForm1.Hide
    ElseIf counter <= 3 Then
    MsgBox 
    "Try Again"
    counter = counter + 1
    TextBox1
    .Value = ""
    Exit Sub
    Else
    MsgBox "Password Not Accepted, Workbook will close"
    Unload Me
    ThisWorkbook
    .Close
    End 
    If
    ComboBox1.Value = ""
    TextBox1.Value = ""
    End Sub 
    اما برای اینکه کدها به درستی کار کنند قواعدی باید رعایت بشه

    در فایل مشاهده میکنید که نام شیت ها به صورت User1,User2,User3 نامگذاری شده با این فرض که هر کاربر ممکنه تعداد شیت بیشتری داشته باشه نامگذاری به شیوه زیر خواهد بود

    User1-1
    User2-1
    User3-1

    بنابر این گر user1 شیت های دیگری نیاز داشته باشه به شکل زیر خواهد بود

    User1-2
    User1-3
    و....

    برای سایر کاربران هم به همین نحو

    در صورتی که این قاعده راعایت نشه پیغام زیر صادر خواهد شد


    کد PHP:
    The name of sheet is wrong 
    سوالی بود در خدمتم
    سلام
    ممنون از جوابتون
    من این کارو کردم ولی یوزر ه دیگه باز نمیشدن
    البته من یوزرهای جدید با نامهای دیگه ساخته بودم مثلا qa یا qc
    ولی نشد اصلا باز نمشد و فقط ادمین باز میشد

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    درود

    در خصوص سوالی که دوستان مطرح کردند مبنی بر اینکه برای کاربر بیش از یک شیت در نظر بگیریم دو راهکار به ذهنم رسید
    1- تعیین شیت های هر کاربر در شیت protectdata به نحوی که با پیمایش ردیف هر کاربر شیت مربوطه باز بشه
    2- استفاده از یک قاعده نامگذاری برای شیت ها

    کد زیر برای راه حل دوم نوشته شده دوستان باید این کد رو جایگزین کدی که برای کلید login یوزر فرم یک نوشته شده کنند


    کد PHP:
    Private Sub CommandButton1_Click()
    Dim PassWord As String
    Dim user 
    As String
    Dim ws 
    As Worksheet
    user 
    = ComboBox1.Value
    PassWord 
    = TextBox1.Value
    If user = "" Or PassWord = "" Then
    MsgBox 
    "Enter name and password"
    Exit Sub
    End 
    If
    If 
    PassWord = WorksheetFunction.VLookup(user, Range("List"), 2, 0) Then

    For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Welcome" And ws.Name <> "Protectdata" Then
    On Error 
    GoTo handler
    If user = Mid(ws.Name, 1, Application.WorksheetFunction.Find("-", ws.Name, 1) - 1) Then
    Sheets
    (ws.Name).Visible = xlSheetVisible
    End 
    If
    End If
    handler:
    If 
    Err = 1004 Then
    MsgBox 
    "The name of sheet is wrong"
    Exit Sub
    End 
    If
    Next
    MsgBox 
    "Password Accepted"
    UserForm1.Hide
    ElseIf counter <= 3 Then
    MsgBox 
    "Try Again"
    counter = counter + 1
    TextBox1
    .Value = ""
    Exit Sub
    Else
    MsgBox "Password Not Accepted, Workbook will close"
    Unload Me
    ThisWorkbook
    .Close
    End 
    If
    ComboBox1.Value = ""
    TextBox1.Value = ""
    End Sub 
    اما برای اینکه کدها به درستی کار کنند قواعدی باید رعایت بشه

    در فایل مشاهده میکنید که نام شیت ها به صورت User1,User2,User3 نامگذاری شده با این فرض که هر کاربر ممکنه تعداد شیت بیشتری داشته باشه نامگذاری به شیوه زیر خواهد بود

    User1-1
    User2-1
    User3-1

    بنابر این گر user1 شیت های دیگری نیاز داشته باشه به شکل زیر خواهد بود

    User1-2
    User1-3
    و....

    برای سایر کاربران هم به همین نحو

    در صورتی که این قاعده راعایت نشه پیغام زیر صادر خواهد شد


    کد PHP:
    The name of sheet is wrong 
    سوالی بود در خدمتم

    Leave a comment:


  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~M*E*H*D*I~
    متاسفانه امکان راهنمایی در چند خط وجود نداره با توجه به اینکه آشنایی کمی با vba داریدکه به علت گستردگی مطلب هست اما اگر پیگیر باشید مطالب آموزشی خیلی خوبی در زمینه vba در انجمن هست که به شما کمک خواهد کرد در جزوه هم حتی الامکان در خصوص نحوه کار کد ها بحث کردم که با مطالعه اون بیشتر با روند کد نویسی آشنا میشید سعی میکنم برای موردی که مطرح کردید کدهای لازم رو بنویسم اما همونطور که گفتم روش های گفته شده فی البداهه و تنها ایده بود و تا زمانی که خودم شروع نکنم به نوشتن نمیدونم چقدر عملی باشه شاید هم راه ساده تری برای کار باشه به هر حال پیگیر باشید جوابتون رو میگیرید
    در مورد فرم یک نمونه در جایی دیدم که در بالای اون تب هایی بود و برای هر واحد جدا بود هر واحد اطلاعاتش را وارد میکرد و همه در یک جا ثبت میشد
    برای من مهم ثبت اطلاعاته که بتونم در تاریخ های مشخص وارد کنم و بتونم خروجی بگیرم ازشون در ضمن قابلیت برگشت به گذشته هم داشته باشه مثلا بتونم اطلاعات چند ماه قبل را را بتونم ببینم با وارد کردن یک تاریخ

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    نوشته اصلی توسط nazi nazi
    سلام ممنونم جواب دادید
    ولی من خیلی از کد نویسی چیزی بلد نیستم
    میشه راهنمایی بیشتری بفرمایید
    این کار شما خیلی خوبه و عالی خیلی پروزه کاری منو جلو انداخت حتما در اون از شما نام خواهم برد
    متاسفانه امکان راهنمایی در چند خط وجود نداره با توجه به اینکه آشنایی کمی با vba داریدکه به علت گستردگی مطلب هست اما اگر پیگیر باشید مطالب آموزشی خیلی خوبی در زمینه vba در انجمن هست که به شما کمک خواهد کرد در جزوه هم حتی الامکان در خصوص نحوه کار کد ها بحث کردم که با مطالعه اون بیشتر با روند کد نویسی آشنا میشید سعی میکنم برای موردی که مطرح کردید کدهای لازم رو بنویسم اما همونطور که گفتم روش های گفته شده فی البداهه و تنها ایده بود و تا زمانی که خودم شروع نکنم به نوشتن نمیدونم چقدر عملی باشه شاید هم راه ساده تری برای کار باشه به هر حال پیگیر باشید جوابتون رو میگیرید

    Leave a comment:


  • nazi nazi
    پاسخ داد
    نوشته اصلی توسط ~M*E*H*D*I~
    درود
    در خصوص بخش اول در اولین فرصت کد چنین امکانی رو در همین تاپیک قرار میدم (با توجه به تفاوت بین ورژن های مختلف در پست های قبلی مطالبی مطرح شده که پیشنهاد میدم مشاهده کنید)

    در خصوص بخش دوم سوال اونچه در پکیج گفته شده اصول اولیه و روشی هست که نحوه کار رو نشون بده مواردی مانند امکان ثبت اطلاعات با فرم چیزی که در حال حاضر به ذهنم میرسه یک طراحی یک فرم برای هر نفر به نحوی که با وارد کرد پسورد فرم مربوطه باز بشه و راه حل بهینه تر استفاده از یک فرم اما به نحوی که بر اساس صحت پسورد در شیت مختص کاربر اطلاعات ثبت بشه البته تا شروع به کد نویسی نشه اشاکالات در نمیاد.
    سلام ممنونم جواب دادید
    ولی من خیلی از کد نویسی چیزی بلد نیستم
    میشه راهنمایی بیشتری بفرمایید
    این کار شما خیلی خوبه و عالی خیلی پروزه کاری منو جلو انداخت حتما در اون از شما نام خواهم برد

    Leave a comment:


  • ~M*E*H*D*I~
    پاسخ داد
    نوشته اصلی توسط nazi nazi
    سلام
    من فایل را خریداری کردم
    میخواستم بدونم اگه هر یوزر دو تا شیت بخواد باید چکار کنم
    و این که هر یوزر برای ورود اطلاعاتش از یک فرم که دارای کلید های ثبت و لغو تصحیح باشه استفاده کنه
    درود
    در خصوص بخش اول در اولین فرصت کد چنین امکانی رو در همین تاپیک قرار میدم (با توجه به تفاوت بین ورژن های مختلف در پست های قبلی مطالبی مطرح شده که پیشنهاد میدم مشاهده کنید)

    در خصوص بخش دوم سوال اونچه در پکیج گفته شده اصول اولیه و روشی هست که نحوه کار رو نشون بده مواردی مانند امکان ثبت اطلاعات با فرم چیزی که در حال حاضر به ذهنم میرسه یک طراحی یک فرم برای هر نفر به نحوی که با وارد کرد پسورد فرم مربوطه باز بشه و راه حل بهینه تر استفاده از یک فرم اما به نحوی که بر اساس صحت پسورد در شیت مختص کاربر اطلاعات ثبت بشه البته تا شروع به کد نویسی نشه اشاکالات در نمیاد.

    Leave a comment:


  • nazi nazi
    پاسخ داد
    سلام
    من فایل را خریداری کردم
    میخواستم بدونم اگه هر یوزر دو تا شیت بخواد باید چکار کنم
    و این که هر یوزر برای ورود اطلاعاتش از یک فرم که دارای کلید های ثبت و لغو تصحیح باشه استفاده کنه

    Leave a comment:

چند لحظه..