آموزش ترکیب کردن چندین فایل اکسل

آموزش ترکیب کردن چندین فایل اکسل

آموزش ترکیب کردن چندین فایل اکسل

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

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

  1. استفاده از ابزارهای اکسل
  2. استفاده از کدهای VBA و یا به اصطلاح ماکرونویسی در محیط اکسل

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

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

همانطور که مشاهده میکنید شیت های انتخاب شده فایل اکسل به فایل اکسل مرجع منتقل شد و کار ما در اینجا به پایان رسید و حال باید به سراغ اکسل بعدی برویم و همین رویه را روی فایل اکسل دوم نیز اجرا کنیم.

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

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

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

  • با افزایش تعداد فایل های اکسل زمانی که صرف ترکیب میشود نیز بدون شک افزایش می یابد.
  • با افزایش تعداد فایل های اکسل امکان خطا نیز افزایش می یابد.

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

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

  1. ابتدا فایل اکسل را باز میکنیم.
  2. تمام شیت های اکسل باز شده را کپی و سپس به فایل اکسل تجمیع منتقل میکنیم.
  3. فایل اکسل را بسته و فایل اکسل بعدی را برای طی کردن موارد 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(1)
    Next Sheet
    Workbooks(FileName).Close
    FileName = Dir()
    Loop

End Sub

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

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

تا اینجای کار متغیرهایی که نیاز بود را ایجاد نمودیم حال باید بریم سراغ 3 مرحله فوق که در مورد آن صحبت کردیم ، با استفاده از دستورات زیر ابتدا فایل های اکسل را به آدرس Path و نام FileName باز میکنیم :

Workbooks.Open FileName:=Path & FileName

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

    For Each Sheet In ActiveWorkbook.Sheets
    Sheet.Copy after:=ThisWorkbook.Sheets(1)
    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(1)
Next Sheet

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

FileName = Dir()

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

پیشنهاد : اگر به دنبال آموزشهای بیشتر ماکرونویسی در محیط اکسل هستید میتوانید از آرشیو کدنویسی در محیط اکسل استفاده نمایید و همچنین در صورت داشتن هرگونه انتقاد و پیشنهادی در مورد پست آموزشی “آموزش ترکیب کردن چندین فایل اکسل” میتوانید آن را در قسمت نظرات همین پست مطرح کنید.

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

همچنین به منظور ترکیب کردن محتوای چندین صفحه (Sheets) در یک صفحه (Sheet) توسط ماکرونویسی اکسل میتوانید کلیپ آموزشی زیر را مشاهده کنید:

اکسل لرن
فیسبوک توییتر گوگل + لینکداین تلگرام واتس اپ کلوب

لینک های دانلود

امتیاز شما به مطلب

دوست داشتم: 271
دوست نداشتم: 232
میانگین امتیازات: 1.17

24 دیدگاه در “آموزش ترکیب کردن چندین فایل اکسل”

سلام ببخشید من میخواستم به جایی که هر دفعه یه فایلو توی یه شیت جدا گونه وارد کنم نزدیک ۱۲۰۰ تا فایل اکسل رو داخل یه شیت وارد کنم هر چی اطلاعت در هر اکسله شاید دو تا شیت داشته باشه هر فایل اکسل یا سه تا یا چهار تا هر چی شیت داخل هر اکسلی که میدم به برنامه رو وارد یه شیت از اکسل مرجع کنه ممنون میشم کمکم کنید

سلام
در صورتی که بخوام فقط یکی از فایل ها باز شود و تنها یک شیت از آن کپی شود. (یک فایل با نامی وابسته به متغیر خاص و یک شیت با نام ثابت از آن فایل) کد چه تغییری میکند؟

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

درود بر شما. این فایل و ماکرو عالی است.اما در این فایل برای هر شیت یک شیت جدید در فایل تجمیع می سازه.
چیزی که مد نظر من بود اینه که فرض بر این که ما سه فایل داریم با صفحات 1 و2 و 3 حال در فایل تجمیع باید فقط سه شیت ایجاد بشه و اطلاعات فایلها در این شیتها زیر هم کپی بشه نه اینکه 9 شیت بسازه.

سپاسگذارم

سلام
این عمل را ابزار Consolidate به تنهایی انجام میدهد
نیازی به ابزار و ماکرویی نیست
پیرامون این ابزار در گوگل جستجو کنید .

با سلام و خسته نباشید. ممنونم از مطالب خوبی که میذارین.
من یه تعداد زیادی فایل اکسل دارم که از نظر ساختاری کاملا مشابه هستن. مثلا اگر توی سلول A:5 فایل X وزن علی رو در سن 20 سالگی نوشته باشه توی فایل Y وزن علی رو توی سن 30 سالگی نوشته. من میخوام یکسری داده های موجود توی این نوع فایل ها رو داخل سلول های یک فایل جدید فراخوانی کنم. مثلا اطلاعات وزن علی توی فایل X و اطلاعات وزن علی توی فایل Y توی سلول A:1 و A:2 قرار داده بشه. ممنون میشم اگه لطف کنین و راهنماییم کنین که چه شکلی میتونم این کار رو انجام بدم.

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

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

خیلی خوشحالم ، تشکر از اینکه وقت گذاشتید و نظر خود را اعلام کردین. سپاسگزارم

با سلام اگر بخواهیم برای این کار تجمیع چند فایل دستور زیر به جای مشخص کردن مسیر و نوع فایل، از Application.GetOpenFilename استفاده کنیم، یعنی با باز شدن پنجره انتخاب فایل آنها را انتخاب و شیت های فعال آنها با نام خودشان بعد از شیت جاری کپی شوند، راه حل چیست. خیلی امتحان کردم نشد ممنون می شوم راهنمایی کنید.
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

بفرمایید
Sub Excellearn()
Dim my_FileName As Variant
my_FileName = Application.GetOpenFilename(FileFilter:=”Excel Files,*.xl*;*.xm*”)

If my_FileName <> False Then

Workbooks.Open Filename:=my_FileName

End If
End Sub

با سلام و وقت بخیر
سوالی داشتم که اگر محبت کنید پاسخ بدید ممنون میشم
من از یک Add-in خاص دائما در ماکرو نویسی هام استفاده میکنم و به کدهاش احتیاج هست و به صورت ریفرنس ازش در کد ها استفاده میشه میخواستم راهکاری بدید که من توی اکسپورت یا سیوی که میکنم که فایل نهایی هست دیگه فایل اکسل نیازی نداشته باشه بره و از اون آدرسی که Add-in هست دائما کدهاشو بخونه و من در غالب یه فایل اصلی کد هایی که داره به عنوان ریفرنس استفاده میشه رو همداشته باشم و یک فایل خروجی نهایی باشه…

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

با سلام و تشکر
من چن workbook دارم که فرضا نام آنها 1 و 2 و 3 باشد و در پوشه ی خاصی در دسکتاپ میباشد
باید سلول های خاصی از هرکدام از آنها به یک شیت خاص در یک workbook دیگر مثلا به نام 4 کپی شود
لطف بفرمایید و دستورات مربوطه را اعلام فرمایید

سلام
آقا محمد آدرس دهی کنید ، بصورت زیر
Range(“A1”).value=Workbooks(“Examples.xlsx”).Range(“B1”)
در آدرس فوق مقدار سلول A1 برابر می شود با مقدار سلول b1 فایل اکسل Examples

سلام متشکرم
مسیر پوشه را چگونه وارد کنم؟
C:\Users\acer\Desktop\Filters Export

در این پوشه چند فایل اکسل هست که باید ستون A تمام فایل ها در یک ستون مجزا در شیت 1 فایل اکسلی که در درایو D قرار دارد کپی گردد

سلام ممکن هست این سوال رو پاسخ بدید
پوزش و تشکر

سلام ممکن هست این سوال رو پاسخ بدید
پوزش و تشکر

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

→ فهرست مطالب