|
Модераторы: Akina |
|
Ethex |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.6.2017 Репутация: нет Всего: нет |
Доброго времени суток.
Сюда будут приложены две формы Access. Одной из них я "вдохновлялся", другая моя (по названию несложно будет понять какая из них какая). Однако, не идентичны. Мне нужно предоставить пользователю возможность предварительно выбрать нужные таблицы для экспорта, а не просто отправлять все разом. Колличество нужных таблиц может варьироваться. Имеется два списка. В первый нажатием кнопки выводятся имена всех таблиц. Во второй список кликом отправляются нужные. Соответственно, процедура экспорта обращается ко второму списку. Проблема: Изначально я забыл присвоить значение переменной cnt. Процедура проходила, но экспортируя только одну таблицу, чьё имя первое в списке. После того как присвоил, при попытке экспорта более одной таблицы выдаёт "ошибка 1004: Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic" в строке:
При первых попытках пару раз вместо этой выдавало другую ошибку. Номер не запомнил, но ругалась на FROM в:
Позже пропала. Не смог понять её причину, т.к. если она пропала благодаря каким-то изменениям в коде, то изменения были крайне несущественными (во всяком случае на мой взгляд). Ошибка же приведённая выше актуальна до сих пор. Прошу помощи. Код процедуры экспорта:
Код кнопки на форме:
P.S. Заранее извиняюсь за возможное несоответствие разделу форума. Присоединённый файл ( Кол-во скачиваний: 9 ) Формы.rar 42,30 Kb |
||||||||
|
|||||||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 453 |
Так проблема-то в чём? 90% текста для описания проблемы - не нужно, а выискивать, что не так, в красочном описании процесса - лениво...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Ethex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.6.2017 Репутация: нет Всего: нет |
Akina, в чём проблема.
При попытке экспорта нескольких таблиц в книгу Excell процедура не проходит. Выдаёт ошибку: ошибка 1004: Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic" в строке кода:
Сам код представлен в сообщении выше. Если же в список выбрано одно имя таблицы, экспорт проходит. Но, собственно, всё затевалось для того, чтобы таблиц импортировать можно было более одной Это сообщение отредактировал(а) Ethex - 3.7.2017, 15:27 |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 453 |
Загрузил и распаковал БД (ту, где три таблицы и одна форма). В каждую таблицу добавил содержательное поле (имя val, тип текстовое) и по 2 записи. Открыл форму и нажал кнопку. Код выполнился без ошибок, данные скопированы в книгу Excel. Резюме: проблема не воспроизводится. Добавлено через 6 минут и 50 секунд PS. Возможный источник проблемы, которая не воспроизведётся на другом инстансе ОС и/или Офиса - локальный шаблон новой книги. Попробуйте после Set wrk = app.Workbooks.Add удалить из книги все листы, кроме одного. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Ethex |
|
||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.6.2017 Репутация: нет Всего: нет |
Агааась. Не работал ранее с такими методами. Пробую разобраться. Akina, если вас это не затруднит, посмотрите вторую форму. Если таблиц было три, то вы, скорее всего (если на форме не было списков, то точно) смотрели вариант со статическим массивом (т.е. не мой). И не удивительно что ошибки не возникло. Ошибка при выполнении кода на другом файле (там таблиц шесть).
Необязательно было утруждаться. После экспорта пустой таблицы в первой строке листа появятся имя полей и имя листа изменится. Если же затруднит, буду признателен если вы об этом сообщите, чтобы не ожидал у моря погоды. Спасибо. P.S. Больше не буду прикреплять больше файлов, чем необходимо Это сообщение отредактировал(а) Ethex - 3.7.2017, 16:43 |
||||
|
|||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 453 |
Ну там ошибка очевидная. Вы открываете рекордсет на первую таблицу ДО цикла, и потом в цикле на все листы будете класть данные из него (Вы же не переоткрываете рекордсет на очередную таблицу списка...). И точно так же не изменяете значение переменной t, в которой храните имя таблицы, используемое как имя листа - само собой при втором проходе Вы пытаетесь вставить лист с тем же именем (t не изменилось же) ещё раз - что собственно и приводит к выводу сообщения. Очень странно, что Вы этого не увидели при трассировке кода. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Ethex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.6.2017 Репутация: нет Всего: нет |
||||
|
||||
Правила форума "MS Access" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS Access | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |