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

شکل ۱ – دیتابیس داده های حقوق
حالا میخواهیم فیش حقوقی مطابق شکل ۲ داشته باشیم که با انتخاب کد ملی هر نفر، اطلاعات مربوطه را در جای خودش ثبت کنه.

شکل ۲- فرم خام طراحی شده برای فیش حقوقی
حالا میخواهیم در سلول I3 هر کد ملی که وارد کردیم، اطلاعات مربوطه از شیت دیتابیس در قسمت مناسب جایگذاری بشه. برای این کار از تابع Vlookup و ترکیبش با Match استفاده میکنیم. در این صورت تابع جلوی هر سلولی قرار بگیره، مقدار مربوطه با اون سلول رو از شیت دیتابیس فراخوانی میکنه.
دقت داشته باشید که عناوین موجود در فیش حقوقی حتما باید با سرستون های دیتابیس عینا مشابه باشند در غیر اینصورت تابع Match خروجی صحیحی نخواهد داشت.
VLOOKUP($I$۳,’حقوق و دستمزد’!$A$۱:$L$۱۵,MATCH(فیش!J4,’حقوق و دستمزد’!$A$۱:$L$۱,۰),۰)
در این فرمول، سلول I3 در دیتابیس جستجو میشه و وقتی پیدا شد، داده ی مربوطه در شماره ستون مورد نظر (خروجی تابع Match ) رو بر میگردونه.
در انتها و در قسمت خالص دریافتی به حروف هم از افزونه ABH استفاده شده که مقدار خالص دریافتی رو به حروف تبدیل میکنه و برای اینکه عدد نهایی ،اعشار نداشته باشه که وقتی به حروف تبدیل میشه خیلی طولانی نشه، نتیجه نهایی رو با تابع Roundup گرد کردیم.
در مورد گرد کردن حتما مقاله مربوط به گرد کردن اعداد رو مطالعه کنید.
گاهی اوقات مقداری که فراخوانی میشه از پهنای سلول بزرگتره و در سلول جا نمیشه و نیاز به تغییر اندازه فونت یا پهنای سلول وجود داره. برای اینکه این مشکل رو حل کنیم همه سلول های حاوی فرمول (که متغیر هستن) رو روی Shrink to fit تنظیم میکنیم. به این ترتیب دیگه مشکلی از این لحاظ نخواهیم داشت و در صورت نیاز، فونت سلول کوچک میشه و نیازی به تغییر دستی این اندازه ها نیست. ویدئو زیر نحوه کار رو تشریح میکنه.
پرینت فیش
حالا میخواهیم کاری کنیم که با زدن یک کلید، برای همه کدهای ملی موجود در دیتابیس، فیش حقوقی در قالب PDF ایجاد بشه.
برای این کار از کدنویسی VBA استفاده میکنیم. و حلقه For که بره و توی ستون کد ملی تک تک سلول ها رو بیاره، جایگزین کنه و شیت رو به PDF تبدیل و در یک فولدر با نام خودش ذخیره کنه.
کد زیر رو در یک ماژول کپی و اجرا میکنیم.
Sub Print_to_File()
Dim File_Address As String, Folder_Address As String
Dim Persons_Numbers As Integer
Dim ICounter As Integer
Persons_Numbers = WorksheetFunction.CountA(Sheet1.Range("A:A")) - 1
Folder_Address = "C:\Users\ExcelPedia\Desktop\Prints\ "
For ICounter = 1 To Persons_Numbers
Sheet2.Range("I3") = Sheet1.Range("A1").Offset(ICounter, 0)
File_Address = Folder_Address & Sheet2.Range("I3") & ".pdf"
Sheet2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=File_Address
Next ICounter
End Subدقت داشته باشید در کد نوشته شده، مسیر ذخیره رو مطابق با سیستم خودتون تغییر بدید.
Folder_Address = “C:\Users\ExcelPedia\Desktop\Prints\“
در واقع متغیر Folder_Address متغیری هست که مسیر ذخیره فولدری که قراره فایل های PDF در اون ذخیره بشن رو تعیین میکنه. پس با همین الگو، قسمت قرمز رنگ رو مطابق با سیستم و فولدر خودتون تغییر بدید.
ویدئو زیر برای تشریح نحوه کدنویسی ارائه شده.
جهت دیدن جزئیات بیشتر و استفاده از فایل نهایی، فایل زیر رو دانلود کنید و آموزشها رو از روی اون مجدد مطالعه کنید.
دانلود فایل نمونه این آموزش
جهت دانلود این فایل روی دکمه زیر کلیک کنید:





سلام و عرض ادب
چرا پرینت تا ردیف ۱۴ میگیرد ؟
درود بر شما
تنظیمات پرینت رو هر طور دوست دارید میتونید تغییر بدید
سلام آیتم دوره اکسل شامل چیا هستن؟
درود بر شما
کدوم دوره ها؟
دوره مقدماتی
پیشرفته؟
با پشتیبانی تماس بگیرید در خدمتتون هستیم
۰۲۱-۴۷۶۲۵۷۵۵
دوره اکسلتون شامل چه آیتم هایی میشه؟