Всем добрый вечер! Подскажите, насколько сложно будет подтянуть значение из Access в Excel. Пример на фото, подтянуть в красную ячейку Аникина по номеру 123456.
Скрытый текст
Файлы бы приложил, но БД для Акцесса весит 1МБ даже пустая почему-то. Файл "База" там одна строчка как на примере-картинке) Спасибо.
БМВ, класс! спасибо, все работает и обновляет, если меняю значения) А допустим моя таблица начинает расти, я могу как-то этот запрос к БД расширять? Или для каждой ячейки отдельно так надо будет делать руками?(
Чтобы теперь подтянуть Иванова? Но это условно, строк будет очень много.
Т.е. этот способ подходит только для одной строки? В примере увеличил до 10 строк примерно. Как быть в таком случае? Можно ли этот запрос записать на VBA, например, и циклом пройтись и добавить 10 таких запросов? Или Excel-евскую базу загрузить в Access, там подтянуть и выгрузить обратно в Excel? Что из этого можно и целесообразно реализовать? (все с учетом того, что это пример, в реальности строк много)
whateverlover написал: Можно ли этот запрос записать на VBA,
А зачем? Можно чуть расширить запрос и выводить связанные таблицы на отдельный лист. Вариант. файлы База.xlsx и Database1.accdb должны находится в папке c:\path. P. S. Большой совет - прочитать про типы данных в базах данных, чётко определить их в Excel и не надеяться, что движок БД будет думать...
Андрей VG, Андрей, привет. Ну и на другой лист не нужно тогда, только убрать ненужное и прикрутить обновление по изменению в первой таблице. Все в C:\Temp :-)
Привет, Михаил. Всё может быть - но это уже макросы. А в сущности, зачем они на данном уровне постановки задачи? Ну, да ТСу виднее, только он в курсе, что с чем зачем и куда надо всё сделать. А самое главное насколько это соответствует - ни шагу влево вправо... P. S. Я бы не очень надеялся на то, что запрос вернёт строки из таблицы Access именно в том порядке, как они идут в таблице Excel.
Андрей VG написал: Я бы не очень надеялся на то, что запрос вернёт строки из таблицы Access именно в том порядке, как они идут в таблице Excel.
Вроде должен. Если честно я тоже об этом думал и для подстраховки оставить лист с результатом, а на первом листе просто VLOOKUP формулой сделать можно, но вроде порядок должен соответствовать левой таблице при связке.
Андрей VG, нет нет, я так не уходил) Просто удалялся тестировать предложенные варианты, а тестировать их, к сожалению, могу только по глубоким вечерам и ночам) Оба вариант классно работают, но вот вариант Андрей VG прямо то, что нужно! Даже лучше, чем нужно, мне обычно ВПР подтягивал одно значение, а тут подтягивает все.) А как это называется, что вы сделали? Думаю, когда на рабочую базу переносить буду возникнут сложности( Мне значит потом нужно будет создать подключение между уже рабочими моими файлами и поменять пути? Тут, смотрю, номера столбцов нигде не указываются. Только пути к файлам и заголовки.
Скрытый текст
А так все супер, спасибо! Прямо чувствую, как моя работа упрощается)
А что значит TDE и TDA? Почему для Excel-файла столбца "Номер" берется TDE, а для Access столбца "Номер" берется TDA? Или это вообще не про то? В ваших файлах все работает и когда другие данные туда подставляю работает, а когда переношу все на рабочие файлы, какие-то ошибки появляются. Если не затруднит, объясните, что за TDE TDA, может ошибки и пропадут) гугл не особо помог.
Ошибки какие только не вылезали) Самая последняя на данный момент: "Ядро СУБД Microsoft Access не может открыть файл "C:\Users\BaranovVO\Desktop\New folder\ОиО ЦО.xlsx" или записать в него данные. файл уже открыт другим пользователем для монопольного доступа, либо требуется разрешение на просмотр и запись данных"
Вот это вставляю в текст команды:
Код
SELECT TDE.Контрагент, TDA.Договор, TDA.Дебет, TDA.Кредет
FROM [Excel 12.0;Database=C:\Users\BaranovVO\Desktop\New folder\ОиО ЦО.xlsx;HDR=YES].[Лист1$] TDE
Left Join ОСВ TDA
ON (TDE.Контрагент = TDA.Контрагент)
При этом если текст команды оставить пустым, то таблица полностью выгружается нормально из Access, т.е. все доступы есть, естественно, почему же когда добавляю текст команды такая ошибка.
БМВ, спасибо, попробую. А такой вопрос: в Aceess то понятно, как он понимает что шапка у столбца "Контрагент". А как он это понимает в Excel? Моя таблица же не отформатирована как умная. Как он понимает по значению TDE.Контрагент, что я имею ввиду именно этот столбец.
Цитата
БМВ написал: это условное название таблиц. Андрей просто назвал от Table Data Excel и Table Data Access.
и вот здесь, если это лишь условные обозначения, то как программа понимает что через TDE я обращаюсь к базе Excel, а через TDA к базе Access?) т.е. я могу указать (TableDataAccess.Контрагент LIKE TableDataExcel.Контрагент%) и программа все равно меня поймет?
подключение к access указано в самом подключении. , а к Excel таблице указано непосредственно в запросе. Там же указано HDR=YES, что означает что первая строка заголовок. Таблицы можно называть хоть Даша и Маша. Главное обозначить.
Не совсем понял, как вообще была создана эта таблица с запросом в соединении? Это вроде бы обычная умная таблица, но у нее есть свойство внешних данных.
Ungrateful написал: Это вроде бы обычная умная таблица, но у нее есть свойство внешних данных.
Дело в том что, как таковые Умные таблицы, появились позднее чем появились QueryTable. А вот просто таблицы, фактически именованные области с определенными свойствами, были давно. А создано элементарно через запрос к внешним данным.