| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > VBA Access Экспорт несколько таблиц в листы одной |
| Автор: Ethex 3.7.2017, 11:32 | ||||||||
| Доброго времени суток. Сюда будут приложены две формы Access. Одной из них я "вдохновлялся", другая моя (по названию несложно будет понять какая из них какая). Однако, не идентичны. Мне нужно предоставить пользователю возможность предварительно выбрать нужные таблицы для экспорта, а не просто отправлять все разом. Колличество нужных таблиц может варьироваться. Имеется два списка. В первый нажатием кнопки выводятся имена всех таблиц. Во второй список кликом отправляются нужные. Соответственно, процедура экспорта обращается ко второму списку. Проблема: Изначально я забыл присвоить значение переменной cnt. Процедура проходила, но экспортируя только одну таблицу, чьё имя первое в списке. После того как присвоил, при попытке экспорта более одной таблицы выдаёт "ошибка 1004: Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic" в строке:
При первых попытках пару раз вместо этой выдавало другую ошибку. Номер не запомнил, но ругалась на FROM в:
Позже пропала. Не смог понять её причину, т.к. если она пропала благодаря каким-то изменениям в коде, то изменения были крайне несущественными (во всяком случае на мой взгляд). Ошибка же приведённая выше актуальна до сих пор. Прошу помощи. Код процедуры экспорта:
Код кнопки на форме:
P.S. Заранее извиняюсь за возможное несоответствие разделу форума. |
| Автор: Akina 3.7.2017, 13:00 |
| Так проблема-то в чём? 90% текста для описания проблемы - не нужно, а выискивать, что не так, в красочном описании процесса - лениво... |
| Автор: Ethex 3.7.2017, 15:22 | ||
| Akina, в чём проблема. При попытке экспорта нескольких таблиц в книгу Excell процедура не проходит. Выдаёт ошибку: ошибка 1004: Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic" в строке кода:
Сам код представлен в сообщении выше. Если же в список выбрано одно имя таблицы, экспорт проходит. Но, собственно, всё затевалось для того, чтобы таблиц импортировать можно было более одной |
| Автор: Ethex 3.7.2017, 16:40 | ||||
Агааась. Не работал ранее с такими методами. Пробую разобраться. Akina, если вас это не затруднит, посмотрите вторую форму. Если таблиц было три, то вы, скорее всего (если на форме не было списков, то точно) смотрели вариант со статическим массивом (т.е. не мой). И не удивительно что ошибки не возникло. Ошибка при выполнении кода на другом файле (там таблиц шесть).
Необязательно было утруждаться. После экспорта пустой таблицы в первой строке листа появятся имя полей и имя листа изменится. Если же затруднит, буду признателен если вы об этом сообщите, чтобы не ожидал у моря погоды. Спасибо. P.S. Больше не буду прикреплять больше файлов, чем необходимо |
| Автор: Akina 4.7.2017, 08:17 |
Ну там ошибка очевидная. Вы открываете рекордсет на первую таблицу ДО цикла, и потом в цикле на все листы будете класть данные из него (Вы же не переоткрываете рекордсет на очередную таблицу списка...). И точно так же не изменяете значение переменной t, в которой храните имя таблицы, используемое как имя листа - само собой при втором проходе Вы пытаетесь вставить лист с тем же именем (t не изменилось же) ещё раз - что собственно и приводит к выводу сообщения. Очень странно, что Вы этого не увидели при трассировке кода. |
| Автор: Ethex 4.7.2017, 10:17 |
Увы, на данном этапе не очень... Исчерпывающий ответ. Проблема решена. Спасибо |