برگزیده های پرشین تولز

Masoudhosseini

کاربر تازه وارد
تاریخ عضویت
25 جولای 2018
نوشته‌ها
15
لایک‌ها
2
سن
32
آموزش ترکیب کردن چندین فایل اکسل
در این پست قصد داریم آموزش ترکیب کردن چندین فایل اکسل را بصورت کامل خدمت شما عزیزان و کاربران علاقه مند به یادگیری سایت آموزشی اکسل لرن ارائه دهیم.

در ابتدا می بایست به این موضوع اشاره کرد که عمل ترکیب کردن چندین فایل اکسل به دو صورت قابل انجام می باشد :

  1. استفاده از ابزارهای اکسل
  2. استفاده از کدهای VBA و یا به اصطلاح ماکرونویسی در محیط اکسل
آموزش ترکیب کردن چندین فایل اکسل با استفاده از ابزارهای اکسل
  1. برای اینکه بتوانید چندین فایل اکسل را با استفاده از ابزارهای اکسل ترکیب کنید ، تنها کافیه فایل اکسل را اجرا و سپس شیت های مدنظرتان را با نگه داشتن کلید ترکیبی Ctrl انتخاب کنید .
  2. سپس روی یکی از شیت های انتخاب شده راست کلیک و گزینه Move or Copy.. را انتخاب نمایید .
  3. با انتخاب گزینه Move or Copy.. پنجره ای در اختیار ما قرار میگیرد که در قسمت Move Select Sheets to book با مشخص کردن نام فایل اکسل تجمیع،شیت های انتخاب شده به فایل اکسل تجمیع منتقل گردد .
همانطور که مشاهده میکنید شیت های انتخاب شده فایل اکسل به فایل اکسل مرجع منتقل شد و کار ما در اینجا به پایان رسید و حال باید به سراغ اکسل بعدی برویم و همین رویه را روی فایل اکسل دوم نیز اجرا کنیم.

excellearn-image.jpg
آموزش ترکیب کردن چندین فایل اکسل با استفاده از ابزارهای اکسل
آموزش ترکیب کردن چندین فایل اکسل با استفاده از ماکرونویسی
اجازه بدید قبل از اینکه شروع به آموزش روش دوم (ماکرونویسی) جهت ترکیب کردن چندین فایل اکسل کنیم ، ضعف های روش اول رو یکبار با هم مرور کنیم :

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

قبل از اینکه شروع به کدنویسی کنیم یکبار سناریو ترکیب کردن چندین فایل اکسل را با هم مرور میکنیم :

  1. ابتدا فایل اکسل را باز میکنیم.
  2. تمام شیت های اکسل باز شده را کپی و سپس به فایل اکسل تجمیع منتقل میکنیم.
  3. فایل اکسل را بسته و فایل اکسل بعدی را برای طی کردن موارد ۱ و ۲ آماده میکنیم.
قصد داریم ۳ مرحله فوق را توسط کدهای وی بی ای (ماکرونویسی) اجرا و پیاده سازی کنیم به همین خاطر وارد محیط ویژول بیسیک اکسل مرجع میشویم ، یک ماژول و یک سابروتین ایجاد و سپس دستورات زیر را داخل آن درج میکنیم :
کد:
Sub Excellearn()
Dim FileName As String
Dim Path As String
Dim Sheet As Worksheet


Path = "D:\excellearn\"
FileName = Dir("D:\excellearn\" & "*.xlsx")

Do While FileName <> ""
Workbooks.Open FileName:=Path & FileName
    For Each Sheet In ActiveWorkbook.Sheets
    Sheet.Copy after:=ThisWorkbook.Sheets(۱)
    Next Sheet
    Workbooks(FileName).Close
    FileName = Dir()
    Loop
  
End Sub


توضیحات دستورات فوق :

  • ابتدا یک متغیر به نام FileName از نوع رشته (String) جهت برگرداندن نام فایل های اکسلی که قرار است جهت تجمع انتخاب شوند ایجاد میکنیم.
  • متغیر دوم را مجددا از نوع رشته (String) جهت برگرداندن آدرس فایل های اکسل در درایو ویندوز و با نام Path ایجاد میکنیم .
  • متغیر سوم را با نام Sheet از Worksheet جهت بررسی شیت های فایل های اکسل ایجاد میکنیم.
تا اینجای کار متغیرهایی که نیاز بود را ایجاد نمودیم حال باید بریم سراغ ۳ مرحله فوق که در مورد آن صحبت کردیم ، با استفاده از دستورات زیر ابتدا فایل های اکسل را به آدرس Path و نام FileName باز میکنیم :

کد:
Workbooks.Open FileName:=Path & FileName

سپس تک تک شیت های اکسل باز شده را با استفاده از دستورات زیر کپی و به فایل اکسل تجمیع منتقل میکنیم :


کد:
    For Each Sheet In ActiveWorkbook.Sheets

    Sheet.Copy after:=ThisWorkbook.Sheets(۱)
    Next Sheet

در انتها فایل اکسل باز شده را میبندیم و میریم سراغ سایر فایل های اکسل موجود داخل آدرس Path :

کد:
Workbooks(FileName).Close

سوال :‌ پس کاربرد حلقه Do while در این دستورات چه خواهد بود ؟

پاسخ :‌ سوال خیلی به جایی بود ، مگر قرار نبود ما چندین فایل اکسل را با هم ترکیب کنیم ؟ اگر من از حلقه Do while کمک نمیگرفتم هیچوقت فایل اکسل دوم و به همین ترتیب سوم ، چهارم و .. برای من باز نمی شدند تا عمل انتقال صورت بگیرد ، پس وجود حلقه Do while الزامی بود و اما اینکه چرا از حلقه Do while استفاده کردم باید خدمتتان عرض کنم بنده با این فرض جلو آمدم که تعداد فایل های موجود اکسل قابل دسترسی نبوده و یا به عبارتی ثابت نخواهد بود.

سوال : چرا از حلقه For Each استفاده کردیم ؟

پاسخ : قرارمون این بود که پس از باز شدن فایل اکسل ، تمام شیت های فایل اکسل کپی و به اکسل تجمیع منتقل شود از این رو بهترین حلقه برای این کار حلقه For Each بود .


کد:
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(۱)
Next Sheet

سوال :‌ کاربرد دستور زیر چیست ؟


FileName = Dir()
پاسخ : پیشنهاد میکنم برای پاسخ به این قسمت پست آموزشی “آموزش و کاربرد تابع DIR در ماکرونویسی اکسل” را مطالعه کنید.

منبع آموزشی : سایت آموزشی اکسل لرن
 
بالا