Задача: Имеется папка с белее чем 10000 подпапок и файлов разнообразных форматов. Требуется найти в этой куче файлы *.xls и конвертировать их в *.xlsx и последующим удалением исходных *.xls файлов. Новые *.xlsx файлы должны быть сохранены в тех же папках, что и их исходные *.xls файлы.
Прошу помощи в решении задачи.
Доброе время суток!
Задача: Имеется папка с белее чем 10000 подпапок и файлов разнообразных форматов. Требуется найти в этой куче файлы *.xls и конвертировать их в *.xlsx и последующим удалением исходных *.xls файлов. Новые *.xlsx файлы должны быть сохранены в тех же папках, что и их исходные *.xls файлы.
Здравствуйте. Попаразитировал на коде от Дмитрия (The_Prist) :
[vba]
Код
Option Explicit
Dim objFSO As Object, objFolder As Object, objFile As Object
Sub Get_All_File_from_SubFolders() Dim sFolder As String With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) Application.ScreenUpdating = False Set objFSO = CreateObject("Scripting.FileSystemObject") GetSubFolders sFolder Set objFolder = Nothing Set objFSO = Nothing Application.ScreenUpdating = True MsgBox "Готово!" End Sub
Private Sub GetSubFolders(sPath) Dim sPathSeparator As String, sObjName As String Set objFolder = objFSO.GetFolder(sPath) For Each objFile In objFolder.Files If Replace(objFile.Name, objFSO.GetBaseName(objFile), "") Like ".xls" Then Workbooks.Open sPath & objFile.Name ActiveWorkbook.SaveAs Filename:= _ sPath & objFile.Name & "x" _ , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close True Kill (sPath & objFile.Name) End If Next For Each objFolder In objFolder.SubFolders GetSubFolders objFolder.Path & Application.PathSeparator Next End Sub
[/vba]
Здравствуйте. Попаразитировал на коде от Дмитрия (The_Prist) :
[vba]
Код
Option Explicit
Dim objFSO As Object, objFolder As Object, objFile As Object
Sub Get_All_File_from_SubFolders() Dim sFolder As String With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) Application.ScreenUpdating = False Set objFSO = CreateObject("Scripting.FileSystemObject") GetSubFolders sFolder Set objFolder = Nothing Set objFSO = Nothing Application.ScreenUpdating = True MsgBox "Готово!" End Sub
Private Sub GetSubFolders(sPath) Dim sPathSeparator As String, sObjName As String Set objFolder = objFSO.GetFolder(sPath) For Each objFile In objFolder.Files If Replace(objFile.Name, objFSO.GetBaseName(objFile), "") Like ".xls" Then Workbooks.Open sPath & objFile.Name ActiveWorkbook.SaveAs Filename:= _ sPath & objFile.Name & "x" _ , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close True Kill (sPath & objFile.Name) End If Next For Each objFolder In objFolder.SubFolders GetSubFolders objFolder.Path & Application.PathSeparator Next End Sub
Спасибо большое за помощь! Всё работает! Тока файлы с КАПСовым расширением "name.XLS" не конвертнулись. Но с этим я уже сам догадался исправить в коде xls на XLS и еще раз прогнал)
Спасибо большое за помощь! Всё работает! Тока файлы с КАПСовым расширением "name.XLS" не конвертнулись. Но с этим я уже сам догадался исправить в коде xls на XLS и еще раз прогнал)reoms