Вопрос простой, но пока для меня непреодалимый, на форуме честно искал, не нашел. Есть макрос, который открывает и сохраняет файл Excel. Что следует дописать в макросе, чтобы при открытии конкретного файла с определенным названием, макрос сохранял файл *xlsx с тем же именем? К примеру, есть файл 01.xml, макрос открывает файл, делает определенные действия с таблицами и текстом, и сохраняет в виде 01.xlsx. И вообще, как заставить макрос открывать все файлы (.xml) в папке и соответственно сохранять из в *xlsx в ту же папку?
Вопрос простой, но пока для меня непреодалимый, на форуме честно искал, не нашел. Есть макрос, который открывает и сохраняет файл Excel. Что следует дописать в макросе, чтобы при открытии конкретного файла с определенным названием, макрос сохранял файл *xlsx с тем же именем? К примеру, есть файл 01.xml, макрос открывает файл, делает определенные действия с таблицами и текстом, и сохраняет в виде 01.xlsx. И вообще, как заставить макрос открывать все файлы (.xml) в папке и соответственно сохранять из в *xlsx в ту же папку?Symbrion
И вообще, как заставить макрос открывать все файлы (.xml) в папке и соответственно сохранять из в *xlsx в ту же папку?
макрос сложно заставить что то делать можно написать макрос, который будет делать то что вам надо... но без конкретного примера, конкретного ответа не будет.
макросом можно составить список файлов *.xml, затем в цикле открыть и пересохранить их по этому же пути... ничего сложного в принципе...
И вообще, как заставить макрос открывать все файлы (.xml) в папке и соответственно сохранять из в *xlsx в ту же папку?
макрос сложно заставить что то делать можно написать макрос, который будет делать то что вам надо... но без конкретного примера, конкретного ответа не будет.
макросом можно составить список файлов *.xml, затем в цикле открыть и пересохранить их по этому же пути... ничего сложного в принципе...K-SerJC
Не верите чему? Есть записанный макрос, который автоматизирует удаление лишних столбцов и удаляет повторяющиеся значения. Есть необходимость каждый раз сохранять файл, под тем именем, под которым он был открыт из *.xml (выгрузка только в этом формате) в формат *.xlsx, для построение дальнейших отчетов по регионам.
Ну это понятно, а вот если нужно сохранять под другим именем, не 01.xlsx? 85 регионов, там 85 файлов будет. Пример: открываем 65.xml, преобразуем с помощью макроса, сохраняем с тем же именем 65.xlsx
Не верите чему? Есть записанный макрос, который автоматизирует удаление лишних столбцов и удаляет повторяющиеся значения. Есть необходимость каждый раз сохранять файл, под тем именем, под которым он был открыт из *.xml (выгрузка только в этом формате) в формат *.xlsx, для построение дальнейших отчетов по регионам.
Ну это понятно, а вот если нужно сохранять под другим именем, не 01.xlsx? 85 регионов, там 85 файлов будет. Пример: открываем 65.xml, преобразуем с помощью макроса, сохраняем с тем же именем 65.xlsx Symbrion
Сори что встреваю. Недавно раскидывал файлы с большим количеством листов на отдельные книги с одним листом. Писал быстро. Может вам поможет для самостоятельного решения своей задачи
[vba]
Код
Sub Get_All_File_from_Folder() Dim sFolder As String, sFiles As String Dim NKl, Sh, Dog, Name_, oW, Папка, oWthis, i%
'диалог запроса выбора папки с файлами 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) sFiles = Dir(sFolder & "*.xls*") Do While sFiles <> "" 'открываем книгу Set oWthis = Workbooks.Open(sFolder & sFiles)
' For Each D_ In Dir("C:\Сохранение\Выписки по запросу 02.02.2017") ' If D_.Name <> "Готовые" Then For Each Sh In oWthis.Sheets If Mid(Sh.Name, 10, 4) = "0006" Then Sh.Select Sh.Range("J38").Select Dog = "" Dog = InputBox(Sh.Range("J38").Value) '"Договор") If Dog = "" Then GoTo next_: Set oW = Workbooks.Add Sh.Copy Before:=oW.Sheets(1) Name_ = Mid(Sh.Name, 1, 5) & " " & NKl & " " & Dog
If Not Dir(Папка & "\" & Name_ & ".xlsx") = "" Then Name_ = Name_ & " _2" For i = 2 To 10 If Not Dir(Папка & "\" & Name_ & " _" & i & ".xlsx") = "" Then Name_ = Name_ & " _" & i Next
oW.SaveAs Filename:= _ Папка & "\" & Name_ & ".xlsx", FileFormat _ :=xlOpenXMLWorkbook, CreateBackup:=False oW.Close End If next_: Next
oWthis.Close False Name sFolder & sFiles As sFolder & "Готовые\" & sFiles sFiles = Dir(sFolder & "*.xls*") Loop End Sub
[/vba]
Сори что встреваю. Недавно раскидывал файлы с большим количеством листов на отдельные книги с одним листом. Писал быстро. Может вам поможет для самостоятельного решения своей задачи
[vba]
Код
Sub Get_All_File_from_Folder() Dim sFolder As String, sFiles As String Dim NKl, Sh, Dog, Name_, oW, Папка, oWthis, i%
'диалог запроса выбора папки с файлами 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) sFiles = Dir(sFolder & "*.xls*") Do While sFiles <> "" 'открываем книгу Set oWthis = Workbooks.Open(sFolder & sFiles)
' For Each D_ In Dir("C:\Сохранение\Выписки по запросу 02.02.2017") ' If D_.Name <> "Готовые" Then For Each Sh In oWthis.Sheets If Mid(Sh.Name, 10, 4) = "0006" Then Sh.Select Sh.Range("J38").Select Dog = "" Dog = InputBox(Sh.Range("J38").Value) '"Договор") If Dog = "" Then GoTo next_: Set oW = Workbooks.Add Sh.Copy Before:=oW.Sheets(1) Name_ = Mid(Sh.Name, 1, 5) & " " & NKl & " " & Dog
If Not Dir(Папка & "\" & Name_ & ".xlsx") = "" Then Name_ = Name_ & " _2" For i = 2 To 10 If Not Dir(Папка & "\" & Name_ & " _" & i & ".xlsx") = "" Then Name_ = Name_ & " _" & i Next
oW.SaveAs Filename:= _ Папка & "\" & Name_ & ".xlsx", FileFormat _ :=xlOpenXMLWorkbook, CreateBackup:=False oW.Close End If next_: Next
oWthis.Close False Name sFolder & sFiles As sFolder & "Готовые\" & sFiles sFiles = Dir(sFolder & "*.xls*") Loop End Sub
p.s. в fname будет имя файла с расширением. .xml можно убрать например так: [vba]
Код
fname=left(fname,len(fname)-4)
[/vba]
а чтобы все файлы из папки я бы сделал цикл, в котором перебором заполнил в коллекцию имена всех подходящих файлов, потом циклом по коллекции открывал книги и обрабатывал.
p.s. в fname будет имя файла с расширением. .xml можно убрать например так: [vba]
Код
fname=left(fname,len(fname)-4)
[/vba]
а чтобы все файлы из папки я бы сделал цикл, в котором перебором заполнил в коллекцию имена всех подходящих файлов, потом циклом по коллекции открывал книги и обрабатывал.K-SerJC
Благими намерениями выстелена дорога в АД.
Сообщение отредактировал K-SerJC - Четверг, 16.02.2017, 14:30