فرض میکنیم که یک فایل اکسل داریم که حاوی 12 شیت با نام ماههای سال است و می خواهیم هر شیت یه عنوان یک فایل جدید اکسل در محل همان فایل ذخیره شود . خب می توانیم این کار را به صورت دستی انجام دهیم که زمان زیاید لازم دارد و درصد خطا هم بالاست .
فهرست محتوا
فایل جدید اکسل با نام شیتهای موجود در فایل جاری
اگر بخواهیم تمام شیتهای فایلی که در حال کار کردن با آن هستیم به صورت کپی و هر شیت با نام همان شیت کنار فایل فعلی ما ذخیره شود ، کافیست کاهای زیر را انجام دهیم.
- مطمئن شوید که فایل ذخیره شده و مکان آن مشخص است
- مسیر فایل حاوی پوشه فارسی نباشد
- کدهای زیر را در یک ماژول قرار داده و آن را اجرا کنید.
Sub SplitEachWorksheet() Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook.SaveAs Filename:=FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
ذخیره کردن هر شیت یک فایل دیگر اکسل
کدهای قبلی ، شیتهای فایل جاری را هر کدا را در یک فایل جدید اکسل ذخیره می کرد و نام هر فایل هم از نام همان شیت گرفته می شد .
اما در ادامه کدهایی تقدیم شما می شود که با اجرای آن از کاربر یک فایل اکسل خواسته می شود و شیتهای موجود در آن فایل به صورت فایلهای جدا گانه در پوشه Sheets در کنار همان فایل اکسل ذخیره می شود .
Sub SplitSheetsToFiles() Dim SourceWorkbook As Workbook Dim DestinationPath As String Dim CurrentSheet As Worksheet Dim NewWorkbook As Workbook Dim FilePath As String On Error Resume Next Set SourceWorkbook = Workbooks.Open(Application.GetOpenFilename(FileFilter:="Excel Files (*.xls; *.xlsx), *.xls; *.xlsx", Title:="Select Excel File")) On Error GoTo 0 If SourceWorkbook Is Nothing Then Exit Sub End If DestinationPath = ThisWorkbook.Path & "\Sheets\" If Dir(DestinationPath, vbDirectory) = "" Then MkDir DestinationPath End If Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In SourceWorkbook.Sheets ws.Copy Application.ActiveWorkbook.SaveAs Filename:=DestinationPath & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True SourceWorkbook.Close SaveChanges:=False ' بستن فايل اصلي MsgBox "تمام شيتها به عنوان فايلهاي جداگانه در مسير زير ذخيره شدند:" & vbCrLf & DestinationPath, vbInformation End Sub
ایجاد Personal Macro و اجرا در تمام فایلها
برای اینکه کدهایی که قرار دادیم در تمام فایلهای اکسل کامپیوتر شما اجرا شود می توانید کدها را در Personal Macro قرار دهید و آیکون آن را در Quick Access Toolbar قرار دهید. که آموزش آن در ویدیو همین پست داده شده است. و هر بار به راحتی با کلیک روی آن تمام شیتها به عنوان یک فایل جدید اکسل به صورت جداگانه ذخیره میشوند.