Страницы: 1
RSS
Как поменять данные в нескольких файлах не открывая файлы?
 
Всем здравствуйте! Проблема у меня такая. Есть около  1000 однотипных файлов в которых нужно заменить названия строк и колонок над данными (не сами данные!)  
Например "Февраль" на "Месяц февраль" и т.д. в 1000 файлах.  
Помогите пожалуйста автоматизировать этот процесс? Подскажите кто знает, как это легче всего сделать?
 
поиск на форуме как открывать файлы из директории.  
 
алгоритм:  
1.открыть файл    
2. заменить диапазон.  
3. закрыть файл.
 
Dim FilesToOpen  
   Dim x As Integer  
 
   FilesToOpen = Application.GetOpenFilename _  
                 (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _  
                  MultiSelect:=True, Title:="Выберите файлы")  
   If TypeName(FilesToOpen) = "Boolean" Then  
       MsgBox "Не выбрано ни одного файла!"  
       GoTo ExitHandler  
   End If  
   x = 1  
   While x <= UBound(FilesToOpen)  
       Workbooks.Open Filename:=FilesToOpen(x)  
...  изменения заголовков  
       ActiveWorkbook.Close  
       x = x + 1  
   Wend
 
Марчук!  
Огромное вам спасибо! Но..Я извиняюсь, я не понимаю как применить этот файл? Мне нужно заменить определенные ячейки в файлах не трогая другие. Объясните пожалуйста, как это сделать?
 
Марчук  
Я имел ввиду как применить ваш скрипт? Какя понял он не из Excel запускается?
 
{quote}{login=}{date=10.02.2009 11:57}{thema=}{post}Марчук  
Я имел ввиду как применить ваш скрипт? Какя понял он не из Excel запускается?{/post}{/quote}  
это макрос и он запускается из excеl
 
Марчук, ругается на строку GoTo ExitHandler, что делать?
 
{quote}{login=}{date=10.02.2009 12:11}{thema=}{post}Марчук, ругается на строку GoTo ExitHandler, что делать?{/post}{/quote}  
добавь в конец перед End Sub  
 
ExitHandler:  
   Application.ScreenUpdating = True  
   Exit Sub  
ErrHandler:  
   MsgBox Err.Description  
   Resume ExitHandler
 
выше пост мой :)
 
Попробуй функцию... Сам не пробовал, мысль была, а потом по другому оформил.  
 
Function GetValue(path, file, sheet, ref, CellAddress)  
               'Получает значение из закрытой рабочей книги  
               'Функция GetValue имеет четыре аргумента;  
               'p a t h— путь к закрытому файлу (например, "d: \f i l e s " ) ;  
               'f i l e — название рабочей книги (например, "budget .xls");  
               'sheet — название рабочего листа (например, "Лист1");  
               'ref — ссылка на ячейку (например, "С4").Dim arg As String  
               'CellAddress - ссылка на искомую ячейку.  
               ' Проверка существования файла  
               '  
If Right(path, 1) <> "\" Then path = path & " \"  
If Dir(path & file) = "" Then  
  GetValue = "Файл не найден"  
Exit Function  
End If  
 
               ' Создание аргумента  
arg = "'" & path & "[" & file & " ] " & sheet & "'!" & _
Range(ref).Range("Al").Address(, , xlRlCl)  
               ' Выполнение макроса XLM  
GetValue = ExecuteExcel4Macro(arg)  
End Function
 
Если первый раз выбрал какой то файл, а второй раз ничего не выбрал, а просто нажимаю ОК, то сообщение не появляется. Выбирается старый файл.
 
Марчук, пост который выше для Вас
 
{quote}{login=}{date=10.02.2009 01:37}{thema=}{post}Марчук, пост который выше для Вас{/post}{/quote}  
вот те файл  
разберешься?
 
Марчук, автор просил "не открывая файлы". Скорее всего подразумевалось "в невидимом для пользователя режиме". Не вижу в коде строки Visible = False.    
Если не сделаешь корректный код - напишу что-нибудь интересное и специально ЗААРХИВИРУЮ :-)
 
{quote}{login=Марчук}{date=10.02.2009 01:56}{thema=Re: }{post}{quote}{login=}{date=10.02.2009 01:37}{thema=}{post}Марчук, пост который выше для Вас{/post}{/quote}  
вот те файл  
разберешься?{/post}{/quote}  
А ведь верно - нажимаю на кнопку открыть не выбрав никакого файла - никакого сообщения. :-)
 
{quote}{login=Юрий М}{date=10.02.2009 02:06}{thema=}{post}Марчук, автор просил "не открывая файлы". Скорее всего подразумевалось "в невидимом для пользователя режиме". Не вижу в коде строки Visible = False.    
Если не сделаешь корректный код - напишу что-нибудь интересное и специально ЗААРХИВИРУЮ :-){/post}{/quote}  
я тогда дома открою и прочитаю :)
 
{quote}{login=Юрий М}{date=10.02.2009 02:11}{thema=Re: Re: }{post}{quote}{login=Марчук}{date=10.02.2009 01:56}{thema=Re: }{post}{quote}{login=}{date=10.02.2009 01:37}{thema=}{post}Марчук, пост который выше для Вас{/post}{/quote}  
вот те файл  
разберешься?{/post}{/quote}  
А ведь верно - нажимаю на кнопку открыть не выбрав никакого файла - никакого сообщения. :-){/post}{/quote}  
счас посмотрю.
 
{quote}{login=Юрий М}{date=10.02.2009 02:06}{thema=}{post}Марчук, автор просил "не открывая файлы". Скорее всего подразумевалось "в невидимом для пользователя режиме". {/post}{/quote}Нет. Не открывая файлы - это еще и желательно комп не включать. Пусть силой мысли обновляются.
Bite my shiny metal ass!      
 
доработал скрытно.  
у меня сообщение показывает если не выбрано ни одного файла :(
 
{quote}{login=Марчук}{date=10.02.2009 02:20}{thema=}{post}доработал скрытно.  
у меня сообщение показывает если не выбрано ни одного файла :({/post}{/quote}  
забыл
 
Марчук  
Вы просто волшебник!!! ОГРОМНОЕ СПАСИБО!!!!!!!!!!  
ТО что нужно!!!! Скачал ваш файл, проверил, поменял на что мне нужно и все!  
Вы гений!!! СПАСИБО еще раз!!!
 
Марчук,  
еще раз здравствуйте! Помогите пожалуйста разобраться. Макрос ваш прекрасно работает на домашнем компьютере с русской виндой, а вот на работе где винда английская вместо русских букв какие то каракули. Отчего это так? Причем я выставил в Editore и Courer(Cyrilic)и Times New Roman(Cyrilic) в нем показывает нормально, а вот когда скрипт работает в Excel вставляет черти что. Не подскажите почему так?
 
как вариант вместо  русских букв писать английскими буквами, или вообще перевести на английский.  
 
вместо  
   MsgBox "Не выбрано ни одного файла!"  
 
написать  
   MsgBox "Don`t select file!"  
 
вместо  
Title:="Выберите файлы")  
 
написать  
Title:="Select files")  
 
 
с английским у меня слабо.
Страницы: 1
Читают тему
Наверх