Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2018, 11:53   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию "Переносной" макрос

Здравствуйте.
У меня есть куча файлов Excel, разных форматов (xls/x, csv), и есть десяток операций, которые нужно проводить над всей информацией каждого файла. Файлы каждый день приходят новые.

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

Мне нужно автоматизировать поиск/замену символов; это прайс-листы, и у них всех постоянно встречаются служебные символы, которые мешают при выгрузке в базу данных.

Что вы можете посоветовать ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 27.01.2018, 12:07   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Насколько я понял, макрос привязывается к конкретному файлу
нет у макроса есть прописка, где-то он находится (в каком-то файле, в камом-то модуле, как-то называется) а вот обрабатывать он может что угодно в каком угодно количестве и где угодно находящееся, главное чтобы был доступ к файлу и достаточно прав на редактирование.
т.е. как написали - так и работает.
я советую написать универсальный макрос а точнее несколько:
1. макрос обработки файла
2. макрос, который будет находить нужные файлы и по очереди передавать их первому макросу для обработки.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.01.2018, 12:30   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

IgorGO, хорошо ...
Но у меня следующая проблема: я с vba-excel сталкиваюсь впервые, и пытаюсь разобраться - как выполнить обход по всем ячейкам ?
Мне нужно во всех ячейках выполнить замену символов, И есть одно важное замечание: я реализовал алгоритм на C++ с использованием необходимой библиотеки - там всё выполняется очень медленно.
Стандартная же функция замены работает достаточно быстро.
Мне не нужны усложнения, так что можно считать, что у меня один лист в каждом файле.
Что мне делать ? В гугле вроде не забанен, но нужное найти не могу (не знаю что и как искать)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 27.01.2018, 13:03   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть же возможность зафиксировать все действия пользователя в макросе. Ну и на основании полученного своё произведение сделать ))

http://exceltip.ru/%D0%BA%D0%B0%D0%B...F%D0%B8%D1%81/
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.01.2018, 13:19   #5
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
зафиксировать все действия пользователя
Пасиба (оставить отзыв не получилось)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 27.01.2018, 13:41   #6
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Опять проблема (как же без них, да ещё и со мной) ...
Есть следующее условие
Код:
Selection.Find("  ") <> Nothing
Это условие для выполнения цикла ("схлопывание" пробелов).
На условие в текущем его виде ругается, мол "Invalid use of object".
Я пошёл в гугл, нашёл
- это (функция поиска, возвращает объект Range/Nothing),
- и это (числовое/строковое сравнение Nothing).

Исходя из полученной информации я понял, что я пытаюсь сравнивать объекты (не компилируется), а когда пытаюсь сравнить с нулём или пустой строкой - выпадает Runtime error.

Как мне быть ?

UPD: разобрался, вместо <> нужно юзнуть Is.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 27.01.2018 в 13:47.
OmegaBerkut вне форума Ответить с цитированием
Старый 27.01.2018, 14:08   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

с проверкой на Nothing в VBA так:
if not Selection.Find(" ") is Nothing then ' значит что-то нашлось
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" Sandakan01 Помощь студентам 1 24.02.2016 03:20