شما به راحتی می توانید تصاویر را در صفحات گسترده خود وارد کنید و آنها را با کد ماکرو دستکاری کنید. در اینجا نحوه درج یک عکس در سلول با استفاده از VBA در اکسل آورده شده است.
Visual Basic for Application، به اختصار VBA، شکلی از ویژوال بیسیک 6 است که در برنامه های مایکروسافت آفیس ادغام شده است. از طریق کدنویسی، VBA به شما امکان می دهد وظایف را در برنامه های آفیس، از جمله اکسل، خودکار کنید. در برخی موارد، حتی می توانید با استفاده از VBA ویژگی های جدیدی را به Excel اضافه کنید.
اگرچه برای استفاده از VBA باید با کد کار کنید، اما این بدان معنا نیست که VBA همه حروف و اعداد است. با VBA در اکسل، می توانید یک ماکرو ایجاد کنید که به شما امکان می دهد تصاویر را در یک سلول یا محدوده ای از سلول ها قرار دهید. ادامه مطلب را بخوانید تا همه چیز را در مورد آن بدانید!
نحوه قرار دادن تصویر در سلول با استفاده از VBA در اکسل
به منظور ایجاد یک ماکرو برای درج تصاویر در سلول های اکسل با استفاده از VBA، در واقع به هیچ دانش پیشرفته ویژوال بیسیک نیاز ندارید. تنها کاری که باید انجام دهید این است که ابزارهای Developer را فعال کنید، ماکرو را ایجاد کنید و کد مناسب را بچسبانید.
با این حال، اگر شما علاقه مند به یادگیری VBA و نوشتن کد خود هستید، ما کد VBA را در بخش سوم تجزیه و تحلیل کرده ایم. البته می توانید بدون استفاده از VBA تصاویر را در اکسل نیز وارد کنید. اما این مقاله در مورد انجام آن از طریق VBA است. بریم به کسب و کار برسیم!
1. فعال کردن ابزارهای توسعه دهنده
برای استفاده از VBA در اکسل، باید ابزار Developer را در اکسل فعال کنید. با این کار تب Developer در نوار فعال می شود که به طور پیش فرض غیرفعال است.
- اکسل را باز کنید.
- به منوی File بروید.
- روی Options در پایین صفحه کلیک کنید. با این کار پنجره Excel Options باز می شود.
- در Excel Options، به تب Customize Ribbon بروید.
- در برگههای اصلی، برنامهنویس را علامت بزنید.
اکنون ابزارهای توسعه دهنده، از جمله دسترسی به VBA، برای شما فعال شده است. لازم نیست هر بار که می خواهید از VBA در اکسل استفاده کنید این کار را انجام دهید. ابزارهای برنامه نویس تا زمانی که آنها را غیرفعال نکنید فعال می مانند.
2. ایجاد ماکرو و درج کد
اکنون زمان آن است که به ساخت ماکرو بپردازیم. از طرف دیگر، میتوانید یک دکمه با استفاده از VBA برای این کار ایجاد کنید، اما ما از ماکروها استفاده میکنیم.
- در اکسل، به تب Developer بروید.
- در قسمت Code، Macros را انتخاب کنید.
- در پنجره جدید، یک نام برای ماکرو خود در زیر نام ماکرو وارد کنید. ما از insertPhotoMacro استفاده می کنیم.
- روی ایجاد کلیک کنید.
هنگامی که روی Create کلیک کنید، پنجره VBA باز می شود و کد ماکرو شما را نمایش می دهد. در حال حاضر، کد از دو خط تشکیل شده است: یک Sub برای شروع ماکرو، و یک End Sub برای پایان دادن به آن.
بیایید مقداری کد به این ماکرو اضافه کنیم. کد زیر را بین دو خط اضافه کنید:
Dim photoNameAndPath As Variant
Dim photo As Picture
photoNameAndPath = Application.GetOpenFilename(Title:="Select Photo to Insert")
If photoNameAndPath = False Then Exit Sub
Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath)
With photo
.Left = ActiveSheet.Range("A1").Left
.Top = ActiveSheet.Range("A1").Top
.Width = ActiveSheet.Range("A1").Width
.Height = ActiveSheet.Range("A1").Height
.Placement = 1
End With
کد نهایی شما باید چیزی شبیه به زیر باشد:
لازم نیست نگران ذخیره پیشرفت خود باشید. هر تغییری که در VBA ایجاد میکنید فوراً ذخیره میشود.
حالا وقت آن است که کد را در محل کار ببینید.
- پنجره VBA را ببندید.
- به تب Developer در اکسل بروید.
- ماکروها را از قسمت Code انتخاب کنید.
- ماکرویی را که به تازگی ایجاد کرده اید برجسته کنید.
- روی Run کلیک کنید.
اکنون یک اعلان باز می شود که از شما می خواهد فایل تصویری را که می خواهید وارد کنید پیدا کنید. تصویر خود را انتخاب کنید و سپس روی Open کلیک کنید. اکنون باید عکس خود را در سلول A1 ببینید!
توجه داشته باشید که تصویر درج شده به اندازه سلول A1 کوچک شده است. شما می توانید این را تغییر دهید، و همچنین کد را برای درج تصویر در سلول های دیگر یا حتی محدوده ای از سلول ها تغییر دهید. در بخش بعدی، ما قصد داریم کد را تجزیه کنیم و پارامترهای موجود در کار را توضیح دهیم.
3. شکستن کد
برای اینکه این کد VBA برای شما آنطور که می خواهید کار کند، باید آن را درک کنید. پس از انجام این کار، میتوانید کد را تغییر دهید تا عکسها را در هر سلولی در هر اندازه وارد کنید. ما کد را ذره ذره مرور می کنیم تا درک آن آسان تر شود.
Sub insertPhotoMacro()
Dim photoNameAndPath As Variant
Dim photo As Picture
photoNameAndPath = Application.GetOpenFilename(Title:="Select Photo to Insert")
If photoNameAndPath = False Then Exit Sub
Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath)
With photo
.Left = ActiveSheet.Range("A1").Left
.Top = ActiveSheet.Range("A1").Top
.Width = ActiveSheet.Range("A1").Width
.Height = ActiveSheet.Range("A1").Height
.Placement = 1
End With
End Sub
هنگامی که کد شروع می شود، از دستور Dim برای تعیین نوع متغیر استفاده می کنیم. ما در اینجا دو متغیر داریم: photoNameAndPath و خود عکس. ما اولی را به عنوان یک نوع و دومی را به عنوان عکس تعیین کرده ایم.
از آنجا، متغیر photoNameAndPath اجرا می شود و برنامه ای را برای دریافت محل نگهداری فایل تصویر باز می کند. این کار از طریق Application.GetOpenFileName انجام می شود. پارامتر Title اختیاری است و محتوای موجود در آن به عنوان نام پنجره نمایش داده می شود.
با استفاده از If photoNameAndPath = False سپس Exit Sub، مشخص می کنیم که اگر آدرس نامعتبر یا خالی داده شود، فرآیند باید خاتمه یابد. با این حال، اگر یک فایل مناسب تغذیه شود، سپس Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath) نشان می دهد که تصویر باید به عنوان متغیر عکسی که قبلا تعریف کردیم تنظیم شود و باید در صفحه گسترده فعال درج شود.
در نهایت با استفاده از With photo و پنج خط بعد از آن، در مورد موقعیت تصویر توضیح می دهیم. .چپ و بالا نشان دهنده مکان های شروع هستند، در حالی که .Width و .Height نشان دهنده مکان های پایانی هستند. اگر به دنبال درج تصویر در سلول های دیگر یا در یک محدوده هستید، این خطوطی هستند که باید تغییر دهید.
.Placement نشان می دهد که آیا عکس باید با سلول ها اندازه شود یا به صورت آزاد درج شود. با تنظیم آن بر روی 1، اندازه آن با سلول ها انجام می شود.
در نهایت برای بستن ماکرو از End With و سپس End Sub استفاده می کنیم. توجه داشته باشید که می توانید متغیرهای photoNameAndPath و photo را به هر نام دیگری که دوست دارید تغییر دهید. فقط به یاد داشته باشید که نام ها را در سراسر کد ثابت نگه دارید.
با VBA کارهای بیشتری را در اکسل انجام دهید
اکسل در واقع یک ابزار فوق العاده برای سازماندهی و تجزیه و تحلیل داده ها است، اما این بدان معنا نیست که اکسل در زمینه گرافیک ناتوان است. اگرچه عکسها و بیتمپها قویترین لباس اکسل نیستند، اکسل هنوز کاملاً قادر به مدیریت آنهاست.
اگرچه میتوانید مانند سایر برنامههای آفیس، تصاویر را در اکسل با استفاده از رابط وارد کنید، اما میتوانید این کار را با استفاده از VBA نیز انجام دهید. با VBA، میتوانید این کار را خودکار کنید و حتی آن را با کارهای دیگر ترکیب کنید تا به طور همزمان اجرا شوند. امکانات VBA در اکسل بی پایان است.