Приветствую уважаемые. Столкнулся с проблемой: нужно 8 тысяч файлов в одной папке в формате *.XLSM (с поддержкой макросов) "Сохранить как" в формате *.XLSX (без макросов). Можете помочь?
Приветствую уважаемые. Столкнулся с проблемой: нужно 8 тысяч файлов в одной папке в формате *.XLSM (с поддержкой макросов) "Сохранить как" в формате *.XLSX (без макросов). Можете помочь?Sancho
Готовый макрос. Макрос создает новую папку рядом с папкой, в которой файлы. И в эту новую папку пересохраняет файлы. [vba]
Код
Sub Изменить_формат_файлов()
Dim strFolder As String, strFileName As String Dim strNewFolder As String, strNewFileName As String Dim wb As Workbook
With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show = 0 Then Exit Sub End If strFolder = .SelectedItems(1) End With
Готовый макрос. Макрос создает новую папку рядом с папкой, в которой файлы. И в эту новую папку пересохраняет файлы. [vba]
Код
Sub Изменить_формат_файлов()
Dim strFolder As String, strFileName As String Dim strNewFolder As String, strNewFileName As String Dim wb As Workbook
With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show = 0 Then Exit Sub End If strFolder = .SelectedItems(1) End With
Спасибо. предложенное решение для перебора файлов хорош, но слишком сложный для моего понимания как срастить ваш код с тем решением. Желание конечно есть разобраться, но без поддержки пока сложно, а методом "научного тыка" не всегда получается желаемый результат.
Спасибо. предложенное решение для перебора файлов хорош, но слишком сложный для моего понимания как срастить ваш код с тем решением. Желание конечно есть разобраться, но без поддержки пока сложно, а методом "научного тыка" не всегда получается желаемый результат.Sancho
StoTisteg, вручную (без макросов) измените расширение xlsm на xlsx, а затем откройте файл xlsx. Появится сообщение, что какие-то проблемы. Таким образом, Ваш способ не подходит, т.к. это более сложный процесс.
StoTisteg, вручную (без макросов) измените расширение xlsm на xlsx, а затем откройте файл xlsx. Появится сообщение, что какие-то проблемы. Таким образом, Ваш способ не подходит, т.к. это более сложный процесс.Karataev
Еще подскажите пожалуйста в некоторых файлах откуда то взялись связи. что нужно добавить в макрос Karataevа что бы код сам отменял обновление связей.
ЗЫ: И заметил какую то странную закономерность. на машине с win7-64бит и офисом 2010 и 2013 обрабатывается 2-3 файла в минуту, и как правило исполнение макроса останавливается неожиданно на любом из файлов, без какой либо ошибки, а на машине с winXP-32 бит и офисом 2007 5 файлов минуту и гонит всё без остановки. И на последней железяке отсутствует запрос обновления связей. прогнал на ней уже 6 папок по 500 файлов до конца, а на машинах с win7 всегда всплывает какой то из вышеперечисленных косяков - 3 машины и ни одной обработанной папки по 500 файлов. Причем последняя железка куда более скудная в начинке, чем первые. почему так?
Еще подскажите пожалуйста в некоторых файлах откуда то взялись связи. что нужно добавить в макрос Karataevа что бы код сам отменял обновление связей.
ЗЫ: И заметил какую то странную закономерность. на машине с win7-64бит и офисом 2010 и 2013 обрабатывается 2-3 файла в минуту, и как правило исполнение макроса останавливается неожиданно на любом из файлов, без какой либо ошибки, а на машине с winXP-32 бит и офисом 2007 5 файлов минуту и гонит всё без остановки. И на последней железяке отсутствует запрос обновления связей. прогнал на ней уже 6 папок по 500 файлов до конца, а на машинах с win7 всегда всплывает какой то из вышеперечисленных косяков - 3 машины и ни одной обработанной папки по 500 файлов. Причем последняя железка куда более скудная в начинке, чем первые. почему так?Sancho
Set wb = Workbooks.Open(Filename:=strFolder & "\" & strFileName, UpdateLinks:=False)
[/vba] По поводу версий. В каждой версии есть свои особенности, на 100% версии не совместимы. Excel 2007 - это не Excel 2010, это уже две разные программы.
По поводу связи. Измените эту строку: [vba]
Код
Set wb = Workbooks.Open(Filename:=strFolder & "\" & strFileName, UpdateLinks:=False)
[/vba] По поводу версий. В каждой версии есть свои особенности, на 100% версии не совместимы. Excel 2007 - это не Excel 2010, это уже две разные программы.Karataev
Сообщение отредактировал Karataev - Пятница, 18.03.2016, 09:59