اضافه کردن امکانات ویژه اکسل Personal Macro

برای داشتن امکانات ویژه اکسل کافیست این آموز را با دقت دنبال کنید تا بتوانید کارهای خود را با سرعت بالاتر و بهتر پیش ببرید. به عنوان مثال در اولین قدم میخواهیم اضافه کردن چک باکس در اکسل را با یک کلیک انجام دهیم.

اضافه کردن Personal Macro به اکسل

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

  1. به تب Developer بروید و روی گزینه Record Macro کلیک کنید
  2. در پنجره باز شده گزینه Personal Macro را مانند تصویر انتخاب کنید.
  3. رو گزینه OK کلیک کنید .
  4. حالا روی Stop Recording کلیک کنید .
  5. با زدن کلیدهای Alt + F11 به کدنویسی بروید ، خواهید دید که Personal.xlsb اضافه شده است.
  6. فایل را ذخیره کنید ، کار تمام است و بخش اول را انجام داده اید.
امکانات ویژه اکسل

افزودن امکانات ویژه اکسل

بخش اول کار را که در واقع یک بار انجام می دهیم را در مرحله قبل انجام دادیم و حالا وقت آن رسیده که از این قابلیت استفاده کنیم و کافیست که مراحل زیر را انجام دهیم و از اکسل لذت بیشتری ببریم.

  • با زدن کلیدهای Alt + F11 به قسمت کدنویسی اکسل می رویم
  • در قسمت چپ که فایلها و آبجکتها وجود دارد روی Personal.xlsb کلیک میکنیم.
  • پوشه Module را باز میکنیم و Module1 را انتخاب می کنیم 
  • نام آن را به Main تغییر می دهیم که البته این دلخواه است .
  • روی Main دابل کلیک میکنیم و حالا فضای خالی سمت راست آماده است
personal macro

افزودن چک باکس با یک کلیک

قبلا مفصل در مورد چک باکس در اکسل آموزش داده ایم و به دلیل اهمیت آن به عنوان اولین مورد از امکانات ویژه اکسل قرار است که به برنامه اکسل خود اضافه کنیم . کافیست که کدهای زیر را در ماژول Main که در مراحل قبل ایجاد کردیم قرار دهیم.

کدهای مورد نیاز چک باکس
Sub AddCheckboxes()
    Dim targetRange As Range
    Dim cell As Range
    Dim checkbox As Object
    Dim response As VbMsgBoxResult
    Dim defaultAddress As String
    Dim strMasg As String
    strMsg = ChrW(1605) & ChrW(1581) & ChrW(1583) & ChrW(1608) & ChrW(1583) & ChrW(1607) & ChrW(32) & ChrW(1575) & ChrW(1606) & ChrW(1578) & ChrW(1582) & ChrW(1575) & ChrW(1576) & ChrW(1740) & ChrW(32) & ChrW(1583) & ChrW(1575) & ChrW(1585) & ChrW(1575) & ChrW(1740) & ChrW(32) & ChrW(1575) & ChrW(1591) & ChrW(1604) & ChrW(1575) & ChrW(1593) & ChrW(1575) & ChrW(1578) & ChrW(32) & ChrW(1575) & ChrW(1587) & ChrW(1578) & ChrW(32) & ChrW(1548) & ChrW(32) & ChrW(1580) & ChrW(1575) & ChrW(1740) & ChrW(1711) & ChrW(1586) & ChrW(1740) & ChrW(1606) & ChrW(32) & ChrW(1588) & ChrW(1608) & ChrW(1583) & ChrW(32) & ChrW(1567)
    
    defaultAddress = Selection.Address
    Set targetRange = Selection
    If targetRange Is Nothing Then
        Exit Sub
    End If
    For Each cell In targetRange
        If cell.Value <> "" Then
            response = MsgBox(strMsg, vbYesNo + vbMsgBoxRight + vbExclamation, "officebaz.ir")
            If response = vbNo Then Exit Sub
            Exit For
        End If
    Next cell
    For Each cell In targetRange.Cells
        cell.Font.Color = cell.Interior.Color       
        Set checkbox = ActiveSheet.CheckBoxes.Add(cell.Left, cell.Top, cell.Width, cell.Height)       
        With checkbox
            .LinkedCell = cell.Address
            .Caption = ""
            .Name = "chk_" & cell.Address
            .Width = 14
            .Height = 14
            .Top = cell.Top + (cell.Height - .Height) / 2
            .Left = cell.Left + (cell.Width - .Width) / 2
        End With
    Next cell
End Sub

برای اینکه بتوانیم کدهای بالا را در تمام فایلهای اکسل این کامپیوتر ران کنیم کافیست کارهایی که در ویدیو آموزشی اول مطلب قرار دادم را انجام دهید .

پیشنهاد شما برای تکمیل امکانات ویژه اکسل

تا اینجا در این آموزش فقط نحوه اضافه کردن چک باکس با یک کلیک را اضافه کردیم و قطعا می توان قابلیتهای دیگری به اکسل افزود تا کار را سرع تر و بهتر انجام دهیم .

چیزی که به فکر خودم می رسد تا اینجا اینست که یک گزینه برای نمایش قیمت لحظه ای دلار اضافه کنم.

شما اگر چیزی دیگری به ذهنتان می رسد تا امکانات ویژه اکسل را افزایش دهیم حتما در قسمت نظرات عنوان نمائید.

نمایش نرخ ارز به صورت آنلاین در اکسل

در این بخش از امکانات ویژه اکسل می خواهیم بحث نمایش قیمت دلار و درهم را به صورت آنلاین در برنامه اکسل داشته باشیم . 

در این آموزش دو روش را بررسی کردم که هر دو روش در ویدیو توضیح داده شده و به دلیل مشکلی که روش اول داشت ، به ناچار از روش بعدی استفاده کردم که به فایل کمکی اکسل نیازی ندارد.

برای اینکه بتوانید قیمت ارزهای دلار و درهم را به صورت لحطه ای در اکسل داشته باشید ، کافیست ویدیو زیر را مشاهده کنید و کدهایی که در ادامه آن آورده شده است را به PERSONALMACRO.XLSB که قبلا در مورد آن صحبت کردیم اضافه کنید . این هم یکی دیگز از امکانات ویژه اکسل 👍

کدهای مورد نیاز برای نمایش قیمت ارز در اکسل
Sub ExtractTableFromWebAndFormat()
    ' متغيرها
    Dim webURLs(1 To 2) As String
    Dim html As Object
    Dim tableNumber As Integer
    Dim table As Object
    Dim targetRanges(1 To 2) As Range
    Dim priceSheet As Worksheet

    ' تنظيمات اوليه
    webURLs(1) = "https://www.tgju.org/profile/price_dollar_rl"
    webURLs(2) = "https://www.tgju.org/profile/price_aed"
    tableNumber = 0 ' شماره جدول مورد نظر

    ' چک کردن و حذف شيت "Price" اگر وجود داشته باشد
    On Error Resume Next
    Application.DisplayAlerts = False
    Sheets("Price").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0

    ' ايجاد شيت جديد با نام "Price"
    Set priceSheet = Sheets.Add(After:=Sheets(Sheets.Count))
    priceSheet.Name = "Price"

    ' درخواست به وب سايت و دريافت جدول
    For i = 1 To 2
        With CreateObject("MSXML2.ServerXMLHTTP")
            .Open "GET", webURLs(i), False
            .send
            Set html = CreateObject("htmlfile")
            html.body.innerHTML = .responseText
        End With

        ' دريافت جدول مورد نظر
        Set table = html.getElementsByTagName("table")(tableNumber)

        ' تعيين محدوده مقصد (سلول شروع)
        Set targetRanges(i) = priceSheet.Cells(2, (i - 1) * 3 + 1)
        priceSheet.Range("a1").Value = "نرخ دلار"
        priceSheet.Range("d1").Value = "نرخ درهم"

        ' نمايش جدول در محدوده مقصد
        InsertTableIntoWorksheet table, targetRanges(i)
    Next i

    ' تغييرات فرمت دهي
    ApplyFormattingToSheet priceSheet
End Sub

Sub InsertTableIntoWorksheet(table As Object, targetRange As Range)
    ' متغيرها
    Dim rowCounter As Long
    Dim columnCounter As Integer
    Dim tableRow As Object
    Dim tableCell As Object

    ' شروع از سلول مقصد
    rowCounter = targetRange.Row
    columnCounter = targetRange.Column

    ' پيمايش سطرها و ستونهاي جدول
    For Each tableRow In table.Rows
        For Each tableCell In tableRow.Cells
            ' قرار دادن مقدار در ورکشيت
            targetRange.Offset(rowCounter - targetRange.Row, columnCounter - targetRange.Column).Value = tableCell.innerText
            columnCounter = columnCounter + 1
        Next tableCell
        ' بازنشاني شماره ستون به ستون مقصد براي شروع ستون جديد
        columnCounter = targetRange.Column
        rowCounter = rowCounter + 1
    Next tableRow

    ' تنظيمات نمايش ورکشيت
    With targetRange.Resize(1, 2).Interior
        .Color = RGB(200, 200, 200) ' تغيير رنگ بک‌گراند دو ستون اول
    End With
    targetRange.Resize(, 2).EntireColumn.AutoFit ' اندازه‌گيري خودکار عرض دو ستون اول
End Sub

Sub ApplyFormattingToSheet(ws As Worksheet)
    ' محدوده‌هايي که بايد فرمت دهي شوند
    Dim rangeToFormat As Range
    Set rangeToFormat = Union(ws.Range("A2:B12"), ws.Range("D2:E12"))

    ' تغيير فونت به VazirMatn FD
    ws.Cells.Font.Name = "VazirMatn FD"

    ActiveSheet.DisplayRightToLeft = True
    ' غيرفعال کردن خطوط شبکه (Gridlines)
    ws.Activate
    ActiveWindow.DisplayGridlines = False


    rangeToFormat.Borders(xlDiagonalDown).LineStyle = xlNone
    rangeToFormat.Borders(xlDiagonalUp).LineStyle = xlNone
    With rangeToFormat.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = -0.499984740745262
        .Weight = xlThin
    End With
    With rangeToFormat.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = -0.499984740745262
        .Weight = xlThin
    End With
    With rangeToFormat.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = -0.499984740745262
        .Weight = xlThin
    End With
    With rangeToFormat.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = -0.499984740745262
        .Weight = xlThin
    End With
    With rangeToFormat.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = -0.499984740745262
        .Weight = xlThin
    End With
    With rangeToFormat.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = -0.499984740745262
        .Weight = xlThin
    End With
    Columns("A:A").EntireColumn.AutoFit
    Columns("D:D").EntireColumn.AutoFit
    Range("B:B,E:E").Select
    Range("E1").Activate
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A2").Select
End Sub

ساخت پوشه با یک کلیک

فرض کنید که در محدوده A1:A10 لیستی از نام پرسنل دارید و یمخواهید برای هر کدام از آنها یک پوشه به نام ایشان بسازید و این کار را میخواهید خیلی سریع انجام دهید . چاره کار استفاده از دستورات VBA است که در ادامه به آن خواهیم پرداخت.

البته اگر بخواهیم جزئی از امکانات ویژه اکسل در نظر نگیریم ، قبلا در مورد ساخت پوشه در اکسل البته با روشی دیگر آموزش داده ایم که بررسی آن آموزش هم خالی از لطف نیست .

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

  1. کدهایی که در ادامه قرار داده شده را کپی کنید 
  2. فایل اکسل را باز کنید و با زدن Alt + F11 به کد نویسی بروید.
  3. ماژول Main از فایل Personal Macro.xlsb را انتخاب کنید .
  4. کدهای کپی شده را آنجا قرار دهید .

البته لازم به ذکر است که حتما ویدیو ابتدایی این آموزش را ببینید تا در جریان قرار بگیرید 😎 که چگونه امکانات ویژه اکسل را در کامپیوتر خود داشته باشید.

کدهای مورد نیاز برای ساخت پوشه
Sub CreateFoldersBasedOnSelection()
    Dim selectedRange As Range
    Dim cell As Range
    Dim folderPath As String
    
    ' انتخاب محدوده از کاربر
    On Error Resume Next
    Set selectedRange = Application.InputBox("لطفاً يک محدوده انتخاب کنيد:", Type:=8)
    On Error GoTo 0
    
    ' اگر کاربر کنسل کرد يا محدوده انتخاب نشد، از اجرا خارج شويد
    If selectedRange Is Nothing Then
        Exit Sub
    End If
    
    ' انتخاب مسير براي ايجاد پوشه‌ها
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "لطفاً يک مسير براي ايجاد پوشه‌ها انتخاب کنيد:"
        If .Show = -1 Then
            folderPath = .SelectedItems(1) & "\"
        Else
            Exit Sub
        End If
    End With
    
    ' ايجاد پوشه براي هر سلول در محدوده
    For Each cell In selectedRange
        Dim cellValue As String
        cellValue = Trim(cell.Value)
        
        ' اطمينان حاصل کنيد که نام پوشه خالي نيست
        If cellValue <> "" Then
            ' ايجاد مسير کامل با ترکيب مسير اصلي و نام سلول
            Dim fullPath As String
            fullPath = folderPath & cellValue
            
            ' اگر پوشه وجود نداشته باشد، آن را ايجاد کنيد
            If Dir(fullPath, vbDirectory) = "" Then
                MkDir fullPath
            End If
        End If
    Next cell
    
    MsgBox "پوشه‌ها با موفقيت ايجاد شدند!", vbInformation + vbMsgBoxRight, "Officebaz.ir"
End Sub

ایجاد پسورد قوی و استاندارد

آموزشی قبلا داده ایم که چگونه پسوردهای استاندارد و قوی در اکسل ایجاد کنید و در این قسمت میخواهیم با چند خط کد کاری کنیم که با یک کلیک یک پسورد 16 کاراکتری قوی ایجاد شود و فقط کارهای زیر را انجام دهید.

  1. مانند مراحل قبل پیش بروید تا PersonalMacro.xlsb را بتوانید ویرایش کنید
  2. کدهای زیر را به انتهای ماژول اضافه کنید 
  3. برای افزودن به ریبون هم از همان روش که در ابتدای مطلب توضیح دادیم استفاده کنید
کدهای مورد نیاز برای ایجاد پسورد
Sub GeneratePassword()
    Dim characters As String
    Dim length As Integer
    Dim i As Integer
    Dim GeneratedPassword As String
    ' بررسي سلول فعال براي وجود داده
    If ActiveCell.Value <> "" Then
        MsgBox "سلول داراي اطلاعات است", vbMsgBoxRight + vbInformation, "Officebaz.ir"
        Exit Sub
    End If

    characters = "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz}~"
    length = 16
    GeneratedPassword = ""

    Randomize
    For i = 1 To length
        GeneratedPassword = GeneratedPassword & Mid(characters, Int((Len(characters) * Rnd) + 1), 1)
    Next i
    ' نوشتن پسورد توليدشده در سلول فعلي
    ActiveCell.Value = GeneratedPassword
End Sub

تهیه پشتیبان از فایل اکسل

برای اینکه یک نسخه از فایل اکسلی که در حال کار با آن هستید را به راحتی بتوانید ذخیره کنید و به ان دسترسی داشته باشید می توانید از کدهای زیر استفاده کنید .

مراحل اولیه کار مانند ابتدای این آموزش هست و فقط باید کدهای زیر را هم به فایل PersonalMacro.xlsb اضافه کنید .

Sub officebazBackup()

    Dim CurrentFileName As String
    Dim BackupPath As String
    Dim BackupFileName As String
    Dim FileExtension As String
    Dim fso As Object
    
    ' مشخص کردن نام فايل جاري
    CurrentFileName = ActiveWorkbook.FullName
    
    ' مشخص کردن مسير پوشه backup
    BackupPath = "D:\backup\"
    
    ' بررسي وجود پوشه backup و ايجاد آن اگر وجود نداشت
    If Dir(BackupPath, vbDirectory) = "" Then
        MkDir BackupPath
    End If
    
    ' استخراج پسوند فايل جاري
    FileExtension = Right(CurrentFileName, Len(CurrentFileName) - InStrRev(CurrentFileName, "."))
    
    ' ايجاد يک شيء FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' تنظيم نام فايل بک آپ با نام فايل جاري، تاريخ و زمان فعلي و پسوند مورد نظر
    BackupFileName = BackupPath & fso.GetBaseName(CurrentFileName) & "_Backup_" & Format(Now, "yyyy-mm-dd_hhmmss") & "." & FileExtension
    
    ' ذخيره فايل جاري با نام جديد
    ActiveWorkbook.Save
    ActiveWorkbook.SaveAs BackupFileName
    
    ' بستن فايل جاري
    '    ActiveWorkbook.Close SaveChanges:=False
    
    ' نمايش پيام به کاربر
    MsgBox "فايل با موفقيت ذخيره شده و يک نسخه هم در مسير " & vbCrLf & vbCrLf & BackupPath & vbCrLf & vbCrLf & " قرار گرفت ", vbInformation + vbMsgBoxRight, "Officebaz.ir"
End Sub

فقط دقت داشته باشید که در این کدها ، مسیر ذخیره سازی فایلها D:\Backup می باشد که در صورت تمایل می توانید آن را تغییر دهید .

ایجاد محدوده نام برای هر شیت

فرض کنید که یک فایل اکسل دارید حاوی بیش از 10 شیت که میخواهید به این شیتها دسترسی سریع داشته باشید ، یک راه ایجاد محدوده نام برای هر شیت یه نام همان شیت است.

با اضافه کردن کدهای زیر ، وقتی اجرا شوند از تمام شیتها یک نام ایجاد می کند 

برای حذف و ویرایش نامه هم کافیست که کلیدهای ctrl + f3 را بزنید .

Sub creatNamebox()
    Dim ws As Worksheet
    Dim i As Integer
    For Each ws In ActiveWorkbook.Worksheets
        i = i + 1
        ActiveWorkbook.Names.Add Name:=ws.Name, RefersTo:=ws.Range("A1")
    Next ws
End Sub

تا اینجا 6 قابلیت را در قالب امکانات ویژه اکسل در این مطلب آموزش داده ایم و در قسمت نظرات منتظر ایده و پیشنهادات شما هستسم تا بتوانیم این امکانات ویژه اکسل را توسعه دهیم . اگر توضیح کدها در ویدیوها برای شما گنگ است پیشنهاد می کنم دوره VBA اکسل را مشاهده نمائید.

ایجاد شیت INDEX شامل نام تمام شیتها

فرض میکنیم که فایل اکسل داریم که حاوی تعداد زیادی شیت است و جابجایی بین شیتها کمی زمان بر می باشد با کدهایی که در ادامه قرار داده می شود ، و با اجرای آن یک جدید به فیا شا اضافه می شود به نام INDEX که در ستون B آن نام شیتها قرار می گیرد.

با کلیک بر روی هر نام به همان شیت منتقل خواهید شده و HYPERLINK می شود  و علاوه بر آن اگر آدرس A1 شیتها خالی باشند در هر شیت هم نوشته Back در A1 قرار میگرد که با کلیک روی آن به شیت INDEX منتقل می شود .

4.5/5 - (14 امتیاز)
پیشنهاد آفیس باز

تمام آموزشهای اکسل بیش از 300 ویدیو و پروژه و فایل و تمرین به شکل گروه بندی شده و مرتب ...

باکس دانلود

یک فایل فشرده دانلود خواهید کرد که شامل 6 فایل متنی جدا گانه هستند و از نام آنها مشخص است که هر کدام برای چه منظوری می باشند.

لیست امکانات ویژه اکسل تا 4 مهرماه 1403:

  1. اضافه کردن چک باکس به محدوده انتخابی
  2. نمایش قیمت لحظه ای دلار و درهم در دو جدول مجزا
  3. ایجاد پوشه از نامهای موجود در محدوده انتخابی
  4. ایجاد لیست ایندکس و نمایش نام شیتها
  5. پشتیبان گیری از فایل اکسل
  6. ایجاد محدوده نام از نام شیتها

 

یادگیری اصولی اکسل !

تمام آموزشهای اکسل در قالب یک برنامه آموزشی با بیش از 300 ویدیو و پروژه و فایل و تمرین به شکل گروه بندی شده و مرتب که کاملا مسیر یادگیری اکسل را برای شما هموار می کنید .

دنبال کردن
اطلاع رسانی به

21 نظرات
پر امتیاز ترین
جدیدترین قدیمی ترین
Inline Feedbacks
مشاهده همه دیدگاهها

دانلود رایگان !!

لطفا شماره موبایلی وارد کنید که روی آن واتس اپ دارید !!

بهتر است که شماره موبایل با واتس اپ فعال وارد کنید و از اخبار و تخفیف ها هم با خبر شوید ، در غیر اینصورت می توانید آدرس ایمیل وارد نمائید.

happy holidays

we want to hear from you

https://dl.officebaz.ir/free/OfficebazPersonalMacro.zip