من قبلاً فکر می کردم که ماکروهای اکسل بیش از حد بیش از حد هستند زیرا مجبور شدم مشکل مراحل ضبط و کد کردن کد را برای کاری که به راحتی می توانم به صورت دستی انجام دهم ، طی کنم. سپس من وظیفه داشتم طرح بندی گزارش (یک کار فریبنده ساده) را استاندارد سازی کنم ، اما من به سرعت فهمیدم که چقدر خسته کننده خواهد بود زیرا تعداد زیادی برگه وجود دارد. این زمانی است که من به ماکرو نگاه کردم و فهمیدم که همه آنها را اشتباه کرده ام.
من قبلاً فکر می کردم که ماکروهای اکسل بیش از حد بیش از حد هستند زیرا مجبور شدم مشکل مراحل ضبط و کد کردن کد را برای کاری که به راحتی می توانم به صورت دستی انجام دهم ، طی کنم. سپس من وظیفه داشتم طرح بندی گزارش (یک کار فریبنده ساده) را استاندارد سازی کنم ، اما من به سرعت فهمیدم که چقدر خسته کننده خواهد بود زیرا تعداد زیادی برگه وجود دارد. این زمانی است که من به ماکرو نگاه کردم و فهمیدم که همه آنها را اشتباه کرده ام.
با یک کلیک ، کلان که من ایجاد کردم ساعت ها کار را برای من ذخیره کرد. هنگامی که من طعم و مزه ای از چگونگی اجرای یک کلان به خوبی اجرا شده ، گردش کار من را تقویت کردم ، قلاب شدم. اکنون آنقدر به آنها اعتماد می کنم که گاهی اوقات به جای فرمول از ماکرو استفاده می کنم.
چرا فکر کردم ماکرو خیلی زیاد است
و چرا اشتباه کردم

مانند بسیاری ، من از ماکرو اجتناب کردم زیرا فکر می کردم منحنی یادگیری خیلی شیب دار است. من همچنین فکر می کردم که آنها برای ساختن غیر ضروری پیچیده هستند و به مهارت های برنامه نویسی پیشرفته نیاز دارند. مطمئناً ، شما به راحتی می توانید یک کلان را ضبط کرده و از آن استفاده کنید بدون کدگذاری ، اما به دلیل داشتن منابع سلول سخت ، مسیرهای پرونده یا عناصر UI ، مقیاس خاص و دشوار است.
این بدان معنی است که من قطعاً باید برخی از ویژوال بیسیک را برای برنامه های (VBA) یاد بگیرم تا بتوانم کد ماکروهای ضبط شده را به چیزی انعطاف پذیر و قابل استفاده مجدد برگردانم. خوشبختانه ، ضبط یک کلان بسیار آسان است. علاوه بر این ، VBA با نحو قابل خواندن و این واقعیت که در اکسل کار می کند ، نسبتاً آسان و بصری است.
علاوه بر این که به من کمک می کنم ماکروهای ضبط شده را ضبط کنم ، دانستن VBA به من کمک می کند تا برخی از خطایی را که به آنها وارد می شود تزریق کنم. علاوه بر این ، اگر گیر کرده ام و در مورد اشکالات به کمک نیاز دارم ، یک جامعه آنلاین مفید وجود دارد که می تواند به من در حل و فصل آنها کمک کند. من هر دلیلی برای یادگیری آن داشتم – پس من.
کلان که همه چیز را تغییر داد
ساعت کار با یک کلیک انجام می شود

هنگامی که کتاب کار فوق الذکر برای من ارسال شد ، بیش از 20 برگه داشت که نیاز به قالب بندی و صادر کردن داشتند. من می دانستم که بیشتر از خط پایین می آیند ، و این که هر بار از انجام این کار متنفر می شوم. وقت آن بود که به یک جادوگر کلان تبدیل شویم.
تنظیم ماکرو آزمایش و خطا زیادی را انجام داد ، به خصوص هنگامی که به درستی کد VBA به دست آمد (با تشکر ، پشته سرریز!). از آنجا که من قبلاً با برنامه نویسی آشنا هستم ، فقط مجبور شدم به یک فیلم Crash Crash VBA در YouTube نگاه کنم تا با آن دست و پنجه نرم کنم. آنچه در پایان ساختم کارآمد و استفاده آسان بود.
فعال کردن برگه توسعه دهنده
ایجاد یک ماکرو با VBA نیاز به دسترسی به برگه توسعه دهنده دارد که به طور پیش فرض قابل مشاهده نیست. برای فعال کردن آن ، روی پرونده -> گزینه ها -> روبان سفارشی کلیک کنید. در بخش اصلی برگه ، توسعه دهنده را بررسی کنید و OK را کلیک کنید.

ایجاد کلان و پالایش
برای ایجاد ماکرو ، روی ماکروس در گروه فرمان کد روبان کلیک کردم تا پنجره ماکروس باز شود. من یک نام ماکرو به ما دادم و روی ایجاد کلیک کردم تا پنجره ویرایشگر VBA باز شود. پس از آن ، من کد را نوشتم ، اسکریپت (Ctrl + S) را ذخیره کردم و ویرایشگر را بستم.
در طول هفته ها ، فیلمنامه را تصفیه کردم. این کار فقط یک ورق را در یک زمان شروع کرد ، اما این نیز خسته کننده بود. اکنون این همه برگه های اکسل را در یک کتاب کار با یک کلیک قالب می کند.
در زیر کد نهایی با نظرات درج شده است تا توضیح دهد که هر بخش چه کاری انجام می دهد. من برخی از خطوط را حذف کرده ام ، مانند مواردی که از طرح رنگی شرکتی که برای آن کار کرده ام و آرم آن در هدر استفاده می کند ، برای حفظ اسکریپت نسبتاً کوتاه است.
Sub FormatAndExportSheets()
Dim ws As Worksheet
Dim rng As Range
Dim pdfPath As String
Dim cell As Range
'Setting the desired font and color scheme
Const FONT_NAME As String = "Calibri"
Const FONT_SIZE As Integer = 11
Const HEADER_FONT_SIZE As Integer = 14
'Setting PDF export folder
pdfPath = ThisWorkbook.Path & "\Formatted " + "Sheets\"
If Dir(pdfPath, vbDirectory) = "" Then MkDir pdfPath
'Looping through each sheet
For Each ws In ThisWorkbook.Worksheets
With ws
'Standardizing the column widths
.Cells.ColumnWidth = 15
'Applying font settings
.Cells.Font.Name = FONT_NAME
.Cells.Font.Size = FONT_SIZE
'Formatting the header (first row)
Set headerRange = .Range("A1:" & .Cells(1, .UsedRange.Columns.Count).Address)
With headerRange
.Font.Bold = True
.Font.Size = HEADER_FONT_SIZE
.Interior.Color = RGB(220, 230, 241) 'Giving the header a light blue background
.Borders.Weight = xlMedium
End With
'Applying number formatting
For Each cell In .UsedRange
If IsNumeric(cell.Value) Then
If cell.Value > 1 Then
cell.NumberFormat = "$#,##0.00" 'Formatting the currencies
ElseIf cell.Value <= 1 And cell.Value >= 0 Then
cell.NumberFormat = "0.00%" 'Formatting the percentages
End If
End If
Next cell
'Exporting the sheet to a PDF
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=pdfPath & .Name & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
Next ws
'Displaying a success message
MsgBox "All sheets formatted and saved as PDFs in: " & pdfPath, vbInformation
End Sub
در اصل ، اسکریپت از طریق هر برگه در کتاب کار حلقه می کند تا سلول هایی را که دارای مقادیر هستند قالب بندی کنند. به طور خاص ، عرض ستون و فونت ها و همچنین مقادیر عددی را به ارز یا درصد استاندارد می کند.
پس از آن ، هر صفحه را به عنوان PDF به پوشه ای به نام ورق های فرمت شده صادر می کند. اگر پوشه وجود نداشته باشد ، یکی از آنها را ایجاد می کند – این خطایی است که شما نمی توانید به تنهایی با ماکروهای ضبط شده انجام دهید. سرانجام ، پس از تکمیل موفقیت آمیز قالب بندی ، یک پیام موفقیت را نشان می دهد.
با استفاده از ماکرو
قبل از استفاده از ماکرو ، من آن را یک میانبر اختصاص دادم. برخی از افراد با ایجاد یک دکمه GUI برای آن خلاق می شوند ، اما اگر ماکروهای زیادی ندارید ، میانبر کار می کند.
برای انجام این کار ، پنجره ماکروس را باز کنید ، ماکرو را انتخاب کرده و گزینه ها را کلیک کنید. در زیر کلید میانبر ، کلید را برای استفاده با Ctrl – Ctrl + J – را انتخاب کردم و روی OK کلیک کردم. هنگام انتخاب کلید ، فقط مطمئن شوید که از قبل به سایر میانبرهای اکسل تعلق ندارد تا از درگیری جلوگیری شود.

ماکرو پس از ضربه زدن به میانبر ، کار خود را انجام می دهد ، و شما پیامی دریافت خواهید کرد که می گوید برگه ها به عنوان PDF ها فرمت و ذخیره شده اند. و اگر پوشه مشخص شده در اسکریپت را بررسی کنید ، PDF های فرمت شده را در آنجا پیدا خواهید کرد. به خاطر داشته باشید که هر بار که ماکرو را اجرا می کنید ، PDF ها رونویسی می شوند.
من از آن زمان تاکنون ماکروهای بیشتری ایجاد کرده ام
اینکه یک کلان کار را کاهش می دهد که می توانست ساعت ها را به دقیقه ها برساند ، در حالی که هر بار نتایج مداوم را تضمین می کند. مهمتر از همه ، این موضع من در مورد ماکروها را کاملاً تغییر داد. آنها بیش از حد نیستند.
من از آن زمان ماکروهای اضافی ایجاد کرده ام که همه چیز را از قالب بندی و محاسبات گرفته تا اعتبار سنجی داده ها و تمیز کردن داده ها کنترل می کند. مطمئناً ، Power Query می تواند به راحتی داده های شما را تمیز کند ، به عنوان مثال ، اما فقط با ماکروها کنترل کامل بر ویژگی های اکسل را برای خودکار سازی کارهای تکراری انجام می دهید.