У меня есть очень много XML файлов одинаковой структуры. Когда я открываю XML прямо в Excele появляется предупреждение а том, что файл может некорректно открыться, я соглашаюсь, далее появляется выбор типа открытия этого файла см вложение, ну и потом он открывается правильно. Пока у меня получается корректно сохранять данные только если открыть XML и сохранить его в XLS средствами самого экселя: - файл - сохранить.
Вопрос, как автоматизировать процесс открытия и сохранения всех файлов? Может есть возможность написать макрос, который будет: 1) открывать xml файл в виде "xml-таблица" как на скриншоте 2) сохранять результат как XLS с именем файла XML
p.s. Я пробовал втупую переименовывать файл в XLS, но при открытии появляются предупреждения как и в XML. - так не подходит. Пробовал пользоваться конвертерами разными - такжэе структура неверна.
У меня есть очень много XML файлов одинаковой структуры. Когда я открываю XML прямо в Excele появляется предупреждение а том, что файл может некорректно открыться, я соглашаюсь, далее появляется выбор типа открытия этого файла см вложение, ну и потом он открывается правильно. Пока у меня получается корректно сохранять данные только если открыть XML и сохранить его в XLS средствами самого экселя: - файл - сохранить.
Вопрос, как автоматизировать процесс открытия и сохранения всех файлов? Может есть возможность написать макрос, который будет: 1) открывать xml файл в виде "xml-таблица" как на скриншоте 2) сохранять результат как XLS с именем файла XML
p.s. Я пробовал втупую переименовывать файл в XLS, но при открытии появляются предупреждения как и в XML. - так не подходит. Пробовал пользоваться конвертерами разными - такжэе структура неверна.potapov14
Sub d() For Each c In Selection If Len(Dir(c)) Then Set wb = Workbooks.OpenXML(Filename:=c.Value, LoadOption:=xlXmlLoadImportToList) n = Mid(c, 1, Len(c) - 4) & ".xlsx" wb.SaveAs Filename:=n, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False wb.Close End If Next End Sub
[/vba]
не заметил что нужно не xlsx a xls - вот: [vba]
Код
Sub d_Xls() Application.DisplayAlerts = False: Application.ScreenUpdating = False For Each c In Selection If Len(Dir(c)) Then Set wb = Workbooks.OpenXML(Filename:=c.Value, LoadOption:=xlXmlLoadImportToList) n = Mid(c, 1, Len(c) - 4) & ".xls" wb.SaveAs Filename:=n, FileFormat:=xlExcel8 wb.Close End If Next Application.DisplayAlerts = True: Application.ScreenUpdating = True End Sub
[/vba]
как вариант: [vba]
Код
Sub d() For Each c In Selection If Len(Dir(c)) Then Set wb = Workbooks.OpenXML(Filename:=c.Value, LoadOption:=xlXmlLoadImportToList) n = Mid(c, 1, Len(c) - 4) & ".xlsx" wb.SaveAs Filename:=n, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False wb.Close End If Next End Sub
[/vba]
не заметил что нужно не xlsx a xls - вот: [vba]
Код
Sub d_Xls() Application.DisplayAlerts = False: Application.ScreenUpdating = False For Each c In Selection If Len(Dir(c)) Then Set wb = Workbooks.OpenXML(Filename:=c.Value, LoadOption:=xlXmlLoadImportToList) n = Mid(c, 1, Len(c) - 4) & ".xls" wb.SaveAs Filename:=n, FileFormat:=xlExcel8 wb.Close End If Next Application.DisplayAlerts = True: Application.ScreenUpdating = True End Sub