Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010 / 6 сообщений из 6, страница 1 из 1
18.04.2014, 17:23
    #38619077
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
Доброго времени суток!
Прошу помочь с решением такой задачи:
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
18.04.2014, 17:31
    #38619092
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
Что за связи? Формулы со ссылками на другой файл?
...
Рейтинг: 0 / 0
18.04.2014, 17:39
    #38619104
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересохранения большого количества файлов Эксель из формата 2003 в формат 2010
А попробуйте пересохранить один файл, а потом открыть другой файл, который на него ссылается. Может быть, ссылки обновятся автоматически?

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


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


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