Как сделать автозамену в XLS ? #396959


#0 by ildus
Есть несколько сотен XLS файлов, в каждом десятки листов. В каждом листе формулы со ссылкой на другие XLS файлы. Необходимо во всех файлах в формуле сделать замену подстроки "\user1cМои Документы" на "С:Мои документы". Как это сделать автоматом во всех книгах на всех листах?
#1 by manyak
VBA, внешний цикл по файлам, внутренний по листам книги (файла), внутренний по ячейкам - правишь формулу.
#2 by Ivan093
Я делал замену через связи в таком случае
#3 by Ivan093
так быстрее получается, чем перебирать листы/ячейки
#4 by Ivan093
Примерно так: Set AWB = Application.ActiveWorkbook aLinks = AWB.LinkSources(xlExcelLinks) If Not IsEmpty(aLinks) Then    For i = 1 To UBound(aLinks)        OldL = aLinks(i)        NewL = Replace(OldL, СтрокаИсх, СтрокаЗамены)        If OldL <> NewL Then                        AWB.ChangeLink Name:=OldL, NewName:=NewL, Type:=xlExcelLinks                End If    Next i         End If
#5 by NikVars
Я командой dir *.*/b > "c:101010.txt" сделал список файлов с их путями Далее рубал процедурой... Даю тебе без заточки для тебя. Процедура ЗаполнитьТаблицу    Если НужныйФайлВыбран=0 Тогда Предупреждение("Не выбран txt-файл!!! Выберите файл."); Возврат; КонецЕсли;    Сообщить("Загрузка данных из xls-файла...");    ТаблицаЗаполнена=0;    //Заполнил таблицу путей...    ТФайл=СоздатьОбъект("Текст");    ТФайл.Открыть(НужныйФайл);//Файл с путями...    НачатьТранзакцию;    ТД.УдалитьСтроки;    Для Н=1 По ТФайл.КоличествоСтрок Цикл        Стр = ТФайл.ПолучитьСтроку(Н);        ТД.НоваяСтрока;        ТД.Н=Н;        ТД.Путь="c:123Документы200806"+Стр+"200806_СФ_"+Стр+".XLS";    КонецЦикла;    //Лезем в файл и заменяем...    Эксел= СоздатьОбъект("Excel.Application");    Для Н=1 По ТД.КоличествоСтрок Цикл        ТД.ПолучитьСтрокуПоНомеру(Н);        ФайлЭксел = Эксел.Workbooks.Open(ТД.Путь); //Открываем файл        НашЛист = ФайлЭксел.Sheets; //Устанавливаем нужный лист                //КолСтрокЭксел=Эксел.Cells(1,1).SpecialCells.Row;  //Так можно узнать количество строк в таблице Эксел!!!        //КонСтр=КолСтрокЭксел;        ТД.ЧтоЗаменять1=Строка(НашЛист.Cells(6,2).Value);        ТД.ЧтоЗаменять2=Строка(НашЛист.Cells(7,2).Value);        Если Найти(ТД.ЧтоЗаменять2,"Семёнов")=0 Тогда            ТД.ЧтоУдалить=1;        КонецЕсли;            Состояние("Заполнение данных: "+Н+" из "+ТД.КоличествоСтрок);        Эксел.WorkBooks.close;        Эксел.Quit;        //Тест        Если (Н>100) и (Тест=1) Тогда Прервать; КонецЕсли;    КонецЦикла;  //Н = НачСтр    ТД.ВыбратьСтроки;    Пока ТД.ПолучитьСтроку=1 Цикл        Пока (ТД.ЧтоУдалить=1) и (ТД.НомерСтроки<>0) Цикл            ТД.УдалитьСтроку;        КонецЦикла;        КонецЦикла;        ЗафиксироватьТранзакцию;    Сообщить("Загрузка данных из txt-файла завершена!!! Количество строк = "+ТД.КоличествоСтрок);    ТаблицаЗаполнена=1; КонецПроцедуры //ЗаполнитьТаблицу
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С