Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/При работе макроса имя листа только одно - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При работе макроса имя листа только одно (Макросы/Sub)
При работе макроса имя листа только одно
tumbinskiy Дата: Вторник, 23.09.2014, 08:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Есть рабочий макрос. Работает отлично, но че то завис над тем как сделать. Суть в следующем.
Макрос разбрасывает по папкам файлы с одинаковыми названием в определенной ячейки. Работает отлично, но когда имя листа у всех файлов одинаково. В моем случае S = "TDSheet". Если имя листа меняется то выдает ошибку.
Во вложении пример и в "Книге 4" имя листа переименовано в "TDSheets" и выдает ошибку.
Как исправить данную проблему что бы макрос работал при любых именах Листа?
К сообщению приложен файл: 2802077.7z (22.1 Kb)
 
Ответить
СообщениеЕсть рабочий макрос. Работает отлично, но че то завис над тем как сделать. Суть в следующем.
Макрос разбрасывает по папкам файлы с одинаковыми названием в определенной ячейки. Работает отлично, но когда имя листа у всех файлов одинаково. В моем случае S = "TDSheet". Если имя листа меняется то выдает ошибку.
Во вложении пример и в "Книге 4" имя листа переименовано в "TDSheets" и выдает ошибку.
Как исправить данную проблему что бы макрос работал при любых именах Листа?

Автор - tumbinskiy
Дата добавления - 23.09.2014 в 08:44
alex77755 Дата: Среда, 24.09.2014, 15:05 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

наверное надо изменить метод получения данных из закрытой книги на открытие каждой книги.
Хотя бы для получения имени листа. Но уж если книгу открыли, то можно получать данные и напрямую из неё без использования функции GetValue.
Это будет немного медленнее.


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщениенаверное надо изменить метод получения данных из закрытой книги на открытие каждой книги.
Хотя бы для получения имени листа. Но уж если книгу открыли, то можно получать данные и напрямую из неё без использования функции GetValue.
Это будет немного медленнее.

Автор - alex77755
Дата добавления - 24.09.2014 в 15:05
The_Prist Дата: Среда, 24.09.2014, 17:27 | Сообщение № 3
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
Интересный подход...
Как-то логически надо подходить к проблеме-то. Представьте, что Вы не знаете человека в лицо. Знаете его фамилию - Иванова.
Заходите в отдел и ищите эту Иванову. Никто не откликается. И правильно делает - Иванова три месяца назад вышла замуж и теперь она Петрова. Без знания этой информации Вы её никогда не найдете. Ну или если кто не подскажет.
Так же и в Excel - если он не знает некий постоянный признак(или ему его кто-то не подскажет) - он не поймет с какого листа брать данные и будет брать с того, о котором ему сказали.
Советую завести отдельный лист в этих книгах, в котором в определенной ячейке прописать некую формулу, которая будет получать имя нужного листа(ЯДЕЙКА или макрофункция). Дать этому листу уникальное имя и скрыть его, чтобы не было соблазна удалять.

Еще вариант: дать уникальное кодовое имя листу, с которого планируется данные переносить. Делается это из проекта VBA в Proporties листа так же, как для любого объекта. Правда, придется написать свою функцию, которая будет этот лист определять по кодовому имени, чтобы можно было к нему обратиться.
Ну и получать данные придется не из закрытой книги, а открывать её предварительно в скрытом режиме(через GetOgject либо обычным методом Open).

Как-то так...


Errare humanum est, stultum est in errore perseverare
 
Ответить
СообщениеИнтересный подход...
Как-то логически надо подходить к проблеме-то. Представьте, что Вы не знаете человека в лицо. Знаете его фамилию - Иванова.
Заходите в отдел и ищите эту Иванову. Никто не откликается. И правильно делает - Иванова три месяца назад вышла замуж и теперь она Петрова. Без знания этой информации Вы её никогда не найдете. Ну или если кто не подскажет.
Так же и в Excel - если он не знает некий постоянный признак(или ему его кто-то не подскажет) - он не поймет с какого листа брать данные и будет брать с того, о котором ему сказали.
Советую завести отдельный лист в этих книгах, в котором в определенной ячейке прописать некую формулу, которая будет получать имя нужного листа(ЯДЕЙКА или макрофункция). Дать этому листу уникальное имя и скрыть его, чтобы не было соблазна удалять.

Еще вариант: дать уникальное кодовое имя листу, с которого планируется данные переносить. Делается это из проекта VBA в Proporties листа так же, как для любого объекта. Правда, придется написать свою функцию, которая будет этот лист определять по кодовому имени, чтобы можно было к нему обратиться.
Ну и получать данные придется не из закрытой книги, а открывать её предварительно в скрытом режиме(через GetOgject либо обычным методом Open).

Как-то так...

Автор - The_Prist
Дата добавления - 24.09.2014 в 17:27
alex77755 Дата: Среда, 24.09.2014, 18:24 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

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


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Среда, 24.09.2014, 18:25
 
Ответить
СообщениеЕсли книгу открывать, то не обязательно знать ни имя листа, ни кодовое имя
В открытой книге можно обратиться к листу по индексу. И без разницы какое у него имя.
Особенно если в книге всего один лист.
Но мне кажется, что где-то попадалась функция возвращающая имя листа из закрытой книги по его индексу
Могу ошибаться

Автор - alex77755
Дата добавления - 24.09.2014 в 18:24
The_Prist Дата: Среда, 24.09.2014, 19:06 | Сообщение № 5
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
можно обратиться к листу по индексу
Если пользователь может переименовать лист - где гарантия, что не переместит? И что будете делать? С кодовым именем в разы надежнее, но опять же не панацея, т.к. лист может быть удален и потом создан заново.
По сути я советовал бы озаботиться правильной защитой структуры файла(если это так важно) или все искать по кодовому имени, что будет надежнее. Т.к. если нужного имени нет - хотя бы неверные данные не попадут в отчет.
Но выбирать автору...

А вернуть имя листа по индексу можно запросом.


Errare humanum est, stultum est in errore perseverare

Сообщение отредактировал The_Prist - Среда, 24.09.2014, 19:07
 
Ответить
Сообщение
можно обратиться к листу по индексу
Если пользователь может переименовать лист - где гарантия, что не переместит? И что будете делать? С кодовым именем в разы надежнее, но опять же не панацея, т.к. лист может быть удален и потом создан заново.
По сути я советовал бы озаботиться правильной защитой структуры файла(если это так важно) или все искать по кодовому имени, что будет надежнее. Т.к. если нужного имени нет - хотя бы неверные данные не попадут в отчет.
Но выбирать автору...

А вернуть имя листа по индексу можно запросом.

Автор - The_Prist
Дата добавления - 24.09.2014 в 19:06
tumbinskiy Дата: Четверг, 25.09.2014, 09:09 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Может приме скинут?
 
Ответить
СообщениеМожет приме скинут?

Автор - tumbinskiy
Дата добавления - 25.09.2014 в 09:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При работе макроса имя листа только одно (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!