فصل ۸: خودکارسازی و پروژه‌ی پایانی

ماکرو: ضبط، ویرایش، فرمت .xlsm و امنیت ماکرو

ضبط کنید، بخوانید، تمیز کنید

هر کاری که هر هفته با همان ترتیب کلیک‌ها انجام می‌دهید — قالب‌بندی خروجی نرم‌افزار حسابداری، حذف ستون‌های اضافه، راست‌چین کردن شیت — کاندیدای ماکرو است. ماکرو در اکسل دسکتاپ با زبان VBA نوشته می‌شود و ساده‌ترین راه شروع، ضبط کردن است.

آماده‌سازی و ضبط

  • تب Developer: File ← Options ← Customize Ribbon ← تیک Developer.
  • Developer ← Record Macro: نام بدون فاصله (FormatReport)، کلید میانبر با Shift (Ctrl+Shift+R) تا میانبرهای اصلی مثل Ctrl+C از کار نیفتند، و محل ذخیره.
  • محل ذخیره‌ی Personal Macro Workbook ماکرو را در فایل پنهان PERSONAL.XLSB می‌گذارد که با هر بار اجرای اکسل بارگذاری می‌شود؛ برای ابزارهای شخصی که روی همه‌ی فایل‌ها لازم دارید.
  • دکمه‌ی Use Relative References را پیش از ضبط روشن کنید اگر ماکرو باید از سلول فعال شروع کند، نه همیشه از A1.

کد ضبط‌شده در برابر کد تمیز

Alt+F11 ویرایشگر VBA را باز می‌کند. ضبط‌کننده هر کلیک را با Select ثبت می‌کند:

' Recorded
Sub FormatReport()
    Columns("C:C").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Font.Bold = True
    Range("E2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.NumberFormat = "#,##0"
End Sub

' Cleaned: no Select, faster and independent of the cursor
Sub FormatReport2()
    Dim ws As Worksheet, lastRow As Long
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ws.Columns("C").Delete
    With ws.Range("A1", ws.Cells(1, ws.Columns.Count).End(xlToLeft))
        .Font.Bold = True
        .Interior.Color = RGB(221, 235, 247)
    End With
    ws.Range("E2:E" & lastRow).NumberFormat = "#,##0"
    ws.DisplayRightToLeft = True
End Sub

قاعده‌ی طلایی: Select و Selection را حذف کنید و مستقیم با شیء کار کنید؛ کد سریع‌تر، خواناتر و مستقل از جای کرسر می‌شود. یافتن آخرین سطر با End(xlUp) از پایین شیت، از End(xlDown) مطمئن‌تر است، چون با یک سلول خالی وسط داده متوقف نمی‌شود.

فرمت فایل

پسوندماکروتوضیح
.xlsxنداردذخیره‌ی فایل ماکرودار با این پسوند، پس از یک هشدار، کدها را حذف می‌کند
.xlsmداردفرمت استاندارد فایل ماکرودار
.xlsbداردباینری؛ کوچک‌تر و سریع‌تر برای فایل‌های بزرگ
.xlamداردAdd-in؛ ابزار شما در همه‌ی فایل‌ها بدون باز کردن کارپوشه

امنیت ماکرو

ماکرو می‌تواند هر کاری در سیستم انجام دهد: حذف فایل، ارسال ایمیل، دانلود بدافزار. به همین دلیل Trust Center ← Macro Settings به‌طور پیش‌فرض روی «Disable with notification» است. مایکروسافت ماکروی فایل‌هایی را که از اینترنت یا پیوست ایمیل آمده‌اند (دارای نشان Mark of the Web) کاملاً مسدود می‌کند و حتی دکمه‌ی Enable هم نمایش داده نمی‌شود. برای فایلی که از منبعش مطمئنید: در ویندوز راست‌کلیک روی فایل ← Properties ← تیک Unblock، یا قرار دادن آن در یک Trusted Location. فایل ماکرودار از فرستنده‌ی ناشناس را هرگز فعال نکنید.

نکته‌هایی که کمتر کسی می‌داند

  • اجرای ماکرو تاریخچه‌ی Undo را پاک می‌کند؛ پیش از اجرای ماکرویی که داده را تغییر می‌دهد، فایل را ذخیره کنید.
  • PERSONAL.XLSB پس از ضبط اولین ماکرو در پوشه‌ی XLSTART ساخته می‌شود؛ هنگام بستن اکسل که می‌پرسد ذخیره شود یا نه، Save بزنید وگرنه ماکرو گم می‌شود.
  • در VBE با F8 خط‌به‌خط اجرا کنید و با Ctrl+G پنجره‌ی Immediate را باز کنید؛ ?Selection.Address یا ?ActiveCell.Value در آن فوراً جواب می‌دهد.
  • Tools ← Options ← Require Variable Declaration را روشن کنید تا Option Explicit خودکار بالای هر ماژول بیاید؛ غلط تایپی در نام متغیر دیگر بی‌صدا یک متغیر خالی جدید نمی‌سازد.
  • برای وصل کردن ماکرو به دکمه، Developer ← Insert ← Form Controls ← Button را به ActiveX ترجیح دهید؛ کنترل‌های ActiveX با تغییر DPI مانیتور یا به‌روزرسانی آفیس گاهی خراب می‌شوند.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.