powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
6 сообщений из 6, страница 1 из 1
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
    #38619077
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Прошу помочь с решением такой задачи:
1. Имеется порядка 500 файлов ".xsl" в различных каталогах и связанных между собой "в хаотическом порядке"
2. Необходимо сохраняя связи между этими файлами изменить их формат на ".xlsm"

Думаю использовать такой алгоритм:
1. Открыть одновременно все файлы (если хватит ресурсов компьютера)
2. Запустить процедуру пересохранения и закрытия этих файлов (см. ниже).
3. Проверка


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Sub Сохранение_открытых_файлов_в_новом_формате()
'ИМЯ_И_ПОЛНОЕ_ИМЯ_ФАЙЛА_ОТКРЫТОГО_В_СОСЕДНЕМ_ПРИЛОЖЕНИИ_
'[msg=12526882]
'http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=939662&msg=12526882

Dim xlApp As Excel.Application
Dim xlWb As Workbook
On Error Resume Next
      Set xlApp = GetObject(, "Excel.Application")
On Error GoTo 0
      If xlApp Is Nothing Then
'MsgBox "Похоже что ни одного файла Excel не открыто"
Exit Sub
End If
    
'цикл пересохранения файлов
For Each xlWb In xlApp.Workbooks
                                 'MsgBox "Имя файла:" & xlWb.Name     MsgBox "Полное имя файла:" & xlWb.FullName     MsgBox "Новое имя файла:" & xlWb.FullName & "m"
If Right(xlWb.FullName, 4) = ".xls" Then
xlWb.SaveAs Filename:= _
        xlWb.FullName & "m", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
Next xlWb

'цикл закрытия файлов
For Each xlWb In xlApp.Workbooks
    'MsgBox "Имя файла:" & xlWb.Name     MsgBox "Полное имя файла:" & xlWb.FullName     MsgBox "Новое имя файла:" & xlWb.FullName & "m"
If Right(xlWb.FullName, 5) = ".xlsm" Then
xlWb.Close True
End If
Next xlWb
Set xlApp = Nothing
End Sub



Посмотрите, пожалуйста, правильно ли я модифицировал макрос, можно ли его улучшить, есть ли в нем явные ошибки.

P.S.
Т.к. файлы находятся в разных каталогах, то просто скопировать их на другой компьютер не получится - связи между файлами находящимися в разных каталогах будут прописаны полными путями. Как можно эту проблему обойти? Таким же образом: открыть все файлы и пересохранить их в новое место?
...
Рейтинг: 0 / 0
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
    #38619092
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за связи? Формулы со ссылками на другой файл?
...
Рейтинг: 0 / 0
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
    #38619104
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А попробуйте пересохранить один файл, а потом открыть другой файл, который на него ссылается. Может быть, ссылки обновятся автоматически?

Открывать одновременно 500 файлов - это сурово Может быть, можно по одному файлу сделать - посмотрите в сторону workbook.LinkSources.
...
Рейтинг: 0 / 0
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
    #38619360
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЧто за связи? Формулы со ссылками на другой файл?
да, формулы со ссылками на другой файл
...
Рейтинг: 0 / 0
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
    #38619361
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КазанскийОткрывать одновременно 500 файлов - это сурово Может быть, можно по одному файлу сделать - посмотрите в сторону workbook.LinkSources.
т.е. пересохранить файлы, потом по очереди открывать, находить ссылки, менять к них название, обновлять и закрывать?
...
Рейтинг: 0 / 0
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
    #38619771
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему при исполнении кода
Код: vbnet
1.
        Workbooks.Open (iFile), UpdateLinks:=1


Эксель открывает файлы очень долго, иногда зависая, но при открытии файла из проводника, файл открывается быстро?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]