خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه ارسال ایمیل از صفحه گسترده اکسل با استفاده از اسکریپت های VBA

الگوی کد ما به شما کمک می کند تا ایمیل های خودکار را از داخل اکسل با استفاده از اشیاء داده همکاری (CDO) و اسکریپت های VBA تنظیم کنید.

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

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

ترجیح می دهید این آموزش را به صورت ویدیویی تماشا کنید؟ ما شما را تحت پوشش قرار داده ایم!

چرا از اکسل ایمیل بفرستید؟

دلایل زیادی وجود دارد که ممکن است بخواهید از داخل مایکروسافت اکسل ایمیل ارسال کنید.

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

احتمالاً به این فکر می کنید که نوشتن اسکریپت ایمیلی که از اکسل پخش می شود پیچیده است. اصلا اینطور نیست. تکنیک موجود در این مقاله از یک ویژگی استفاده می کند که برای مدت طولانی در Excel VBA در دسترس بوده است، اشیاء داده های همکاری (CDO).

Excel VBAProject References Menu با Microsoft CDO برای Windows 2000 Library انتخاب شد

CDO یک جزء پیام رسانی است که از نسل های اولیه سیستم عامل در ویندوز استفاده می شود. قبلاً CDONTS نامیده می شد و سپس با ظهور ویندوز 2000 و XP با “CDO برای ویندوز 2000” جایگزین شد. این مؤلفه قبلاً در نصب VBA شما در Microsoft Word یا Excel گنجانده شده است و آماده استفاده است.

استفاده از کامپوننت ارسال ایمیل از داخل محصولات ویندوز با VBA را بسیار آسان می کند. در این مثال، از مولفه CDO در اکسل برای ارسال ایمیلی استفاده می‌کنید که نتایج را از یک سلول اکسل خاص تحویل می‌دهد.

مرحله 1: حساب جیمیل خود را آماده کنید

برای ارسال ایمیل از Microsoft Excel، ما از Gmail استفاده خواهیم کرد، اگرچه می‌توانید ماکرو زیر را برای کار با سایر سرویس گیرندگان ایمیل سفارشی کنید. توجه داشته باشید که Gmail دیگر اجازه دسترسی به برنامه های شخص ثالث را نمی دهد، به این معنی که ابتدا باید احراز هویت 2 مرحله ای Gmail را فعال کنید.

از صفحه امنیت حساب Google خود، در بخش ورود به سیستم Google، روی گذرواژه‌های برنامه کلیک کنید. در صفحه گذرواژه‌های برنامه، منوی کشویی انتخاب برنامه را پیدا کرده و ایمیل را انتخاب کنید. از گزینه Select device، Windows Computer را انتخاب کنید. سپس GENERATE را بزنید.

مطلب مرتبط:   نحوه تولید UUID در Rust

Gmail-App-Passwords-1

رمز عبور برنامه 16 کاراکتری را یادداشت کنید. هنگام پیکربندی ماکرو به آن نیاز خواهید داشت.

مرحله 2: یک ماکرو VBA ایجاد کنید

نکته: قبل از شروع، فایل اکسلی را که با آن کار می‌کنید به‌عنوان یک کتاب کار با قابلیت Macro-enabled ذخیره کنید، یعنی در قالب XLSM.

ابتدا به تب Excel Developer نیاز داریم. اگر آن را نمی بینید، در اینجا نحوه فعال کردن آن آمده است:

  1. به File > Options بروید.
  2. در قسمت Customize the Ribbon > Main Tabs، گزینه Developer را علامت بزنید.
  3. برای ذخیره تغییرات روی OK کلیک کنید.

منوی روبان سفارشی اکسل

در تب Developer اکسل، روی Insert در کادر Controls کلیک کنید و سپس یک دکمه فرمان را انتخاب کنید.

منوی دکمه فرمان درج برنامه نویس اکسل

آن را در برگه بکشید و سپس با کلیک بر روی Macros در نوار Developer یک ماکرو جدید برای آن ایجاد کنید.

Excel-CommandButton-Macro-Menu-1

وقتی روی دکمه Create کلیک می کنید، ویرایشگر VBA باز می شود.

با رفتن به Tools > References در ویرایشگر، مرجع را به کتابخانه CDO اضافه کنید.

منوی مراجع ابزار ویرایشگر VBA Excel

لیست را به پایین بروید تا Microsoft CDO for Windows 2000 Library را پیدا کنید. کادر را علامت بزنید و OK را بزنید.

منوی مراجع ویرایشگر VBA اکسل

وقتی روی OK کلیک می‌کنید، نام تابعی را که در آن اسکریپت را چسبانده‌اید، یادداشت کنید. بعداً به آن نیاز خواهید داشت.

مرحله 3: ماکرو خود را پیکربندی کنید

اکنون شما آماده ایجاد اشیاء نامه و تنظیم تمام فیلدهای لازم برای ارسال ایمیل هستید. به خاطر داشته باشید که در حالی که بسیاری از فیلدها اختیاری هستند، فیلدهای From و To مورد نیاز هستند. تمام کدهای زیر را در پنجره Module1 (کد) خود جایگذاری کنید.

این همان چیزی است که کد کامل به نظر می رسد:

Sub Send_Emails()
Dim NewMail As CDO.Message
Dim mailConfig As CDO.Configuration
Dim fields As Variant
Dim msConfigURL As String
On Error GoTo Err:
&aposearly binding
Set NewMail = New CDO.Message
Set mailConfig = New CDO.Configuration
&aposload all default configurations
mailConfig.Load -1
Set fields = mailConfig.fields
&aposSet All Email Properties
With NewMail
.From = "username@gmail.com"
.To = "username@gmail.com"
.CC = ""
.BCC = ""
.Subject = "Send Email From an Excel Spreadsheet"
.TextBody = "This is the body of your email. And here is some added data:" & Str(Sheet1.Cells(2, 1))
.Addattachment "c:\data\email.xlsx" &aposOptional file attachment; remove if not needed.
.Addattachment "c:\data\email.pdf" &aposDuplicate the line for a second attachment.
End With
msConfigURL = "http://schemas.microsoft.com/cdo/configuration"
With fields
.Item(msConfigURL & "/smtpusessl") = True &aposEnable SSL Authentication
.Item(msConfigURL & "/smtpauthenticate") = 1 &aposSMTP authentication Enabled
.Item(msConfigURL & "/smtpserver") = "smtp.gmail.com" &aposSet the SMTP server details
.Item(msConfigURL & "/smtpserverport") = 465 &aposSet the SMTP port Details
.Item(msConfigURL & "/sendusing") = 2 &aposSend using default setting
.Item(msConfigURL & "/sendusername") = "username@gmail.com" &aposYour gmail address
.Item(msConfigURL & "/sendpassword") = "password" &aposYour password or App Password
.Update &aposUpdate the configuration fields
End With
NewMail.Configuration = mailConfig
NewMail.Send

MsgBox "Your email has been sent", vbInformation
Exit_Err:
&aposRelease object memory
Set NewMail = Nothing
Set mailConfig = Nothing
End
Err:
Select Case Err.Number
Case -2147220973 &aposCould be because of Internet Connection
MsgBox "Check your internet connection." & vbNewLine & Err.Number & ": " & Err.Description
Case -2147220975 &aposIncorrect credentials User ID or password
MsgBox "Check your login credentials and try again." & vbNewLine & Err.Number & ": " & Err.Description
Case Else &aposReport other errors
MsgBox "Error encountered while sending email." & vbNewLine & Err.Number & ": " & Err.Description
End Select
Resume Exit_Err
End Sub

و اینها بخش ها و فیلدهایی هستند که باید شخصی سازی کنید:

  • With NewMail: این قسمت شامل تمام پارامترهای ارسال ایمیل شما از جمله متن ایمیل شما می باشد. فیلد .From باید حاوی آدرس جیمیل شما باشد، اما شما آزادید که فیلدهای دیگر را هر طور که می خواهید تنظیم کنید. برای بدنه، می‌توانید اجزای پیام را با استفاده از رشته & برای درج داده‌ها از هر یک از برگه‌های مایکروسافت اکسل مستقیماً در پیام ایمیل، درست مانند تصویر بالا، کنار هم قرار دهید. همچنین می توانید یک یا چند فایل را پیوست کنید.
  • با فیلدها: اینجا جایی است که تنظیمات SMTP خود را برای حساب جیمیل خود پیکربندی می کنید. هنگام کپی کردن کد، فیلدهای smtpserver و smtpserverport را به همان صورت باقی بگذارید. نام کاربری جیمیل و رمز عبور 16 رقمی برنامه را در فیلدهای مربوطه وارد کنید.

مرحله 4: ماکرو خود را تست کنید

در ویرایشگر VBA، به Run > Run Sub/User Form بروید یا برای تست ماکرو، F5 را فشار دهید. اگر ایمیل شما ارسال نشد، باید یک پیام خطا مشاهده کنید. در غیر این صورت، تأییدی مبنی بر اینکه ایمیل شما با موفقیت ارسال شده است را مشاهده خواهید کرد.

Excel-Send-Email-Macro-VBA-Email-Has-Been-Sent-1

اگر خطایی دریافت کردید که می‌خواند حمل و نقل به سرور متصل نشد، مطمئن شوید که نام کاربری، رمز عبور، سرور SMTP و شماره پورت صحیح را در خطوط کد فهرست شده در زیر فیلدهای With وارد کرده‌اید.

مرحله 5: دکمه فرمان را به اسکریپت خود وصل کنید

برای اتصال دکمه فرمان خود به این اسکریپت، به ویرایشگر کد بروید و روی Sheet1 دوبار کلیک کنید تا کد VBA آن کاربرگ را مشاهده کنید. دکمه خود را انتخاب کنید، به عنوان مثال CommandButton1، از منوی کشویی سمت چپ و تعریف عمل در سمت راست. کلیک کنید کار می کند. سپس نام تابعی را که اسکریپت بالا را در آن جایگذاری کردید تایپ کنید. در مثال ما Send_Emails است.

اکسل ارسال ایمیل ماکرو برای دکمه فرمان

وقتی اکنون به برگه خود برگشتید، روی دکمه ارسال ایمیل کلیک کنید.

در اینجا مثالی از این است که پیام در صندوق ورودی شما چگونه باید باشد:

ارسال ایمیل با Excel VBA ماکرو موفقیت آمیز

آن را بیشتر کنید و کل فرآیند را خودکار کنید

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

در مرحله بعد، روی ThisWorkbook از سلسله مراتب VBAProject دوبار کلیک کنید.

از دو فیلد کشویی در بالای پنجره کد، Workbook را انتخاب کنید و از منوی کشویی Methods گزینه Open را انتخاب کنید.

اسکریپت ایمیل بالا را در Sub Workbook_Open() قرار دهید.

هر زمان که فایل اکسل را باز کنید، ماکرو را اجرا می کند.

اکسل وقتی کتاب کار باز می شود ایمیل ارسال کنید

بعد، Task Scheduler را باز کنید. می‌خواهید از این ابزار برای درخواست از ویندوز برای باز کردن خودکار صفحه‌گسترده در فواصل زمانی معین استفاده کنید، در این مرحله ماکرو شما اجرا می‌شود و ایمیل را ارسال می‌کند.

Windows 11 Task Scheduler

از منوی Action، Create Basic Task… را انتخاب کنید و تا زمانی که به صفحه Action برسید، از طریق جادوگر حرکت کنید.

Start a program را انتخاب کرده و Next را بزنید. از دکمه Browse برای پیدا کردن مکان Microsoft Excel در رایانه خود استفاده کنید، یا مسیر را در قسمت Program/script کپی و جایگذاری کنید. سپس، مسیر سند مایکروسافت اکسل خود را در فیلد Add arguments وارد کنید. جادوگر را کامل کنید، و برنامه ریزی شما درست خواهد شد.

ارزش آن را دارد که آزمایشی را با برنامه‌ریزی چند دقیقه در آینده انجام دهید و بعد از اینکه تأیید کردید کار می‌کند آن را اصلاح کنید.

توجه: ممکن است مجبور شوید تنظیمات Trust Center خود را تنظیم کنید تا مطمئن شوید که ماکرو به درستی اجرا می شود.

برای انجام این کار، صفحه گسترده را باز کنید و به File > Options > Trust Center بروید. از اینجا، روی Trust Center Settings… کلیک کنید و در صفحه بعدی شماره گیری رادیویی را روی Never show information about content blocked قرار دهید.

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

مایکروسافت اکسل یک ابزار فوق‌العاده قدرتمند است، اما یادگیری نحوه استفاده حداکثری از آن می‌تواند کمی ترسناک باشد. اگر می خواهید واقعاً به نرم افزار مسلط شوید، باید با VBA راحت باشید و این کار کوچکی نیست.

با این حال، نتایج برای خود صحبت می کنند. با کمی تجربه VBA، به زودی می‌توانید مایکروسافت اکسل را وادار کنید تا وظایف اصلی را به صورت خودکار انجام دهد و به شما زمان بیشتری برای تمرکز بر روی مسائل مهم‌تر می‌دهد.