Доброго времени суток! Нужно выбрать данные из столбца В , напротив которых в столбце А стоит литера, которая расположена в ячейке D2. Данные переносятся в другую книгу. Ячейка D2 тоже расположена в ней. Прикрепленный файл является своего рода базой. Подскажите в какую сторону копать?
Доброго времени суток! Нужно выбрать данные из столбца В , напротив которых в столбце А стоит литера, которая расположена в ячейке D2. Данные переносятся в другую книгу. Ячейка D2 тоже расположена в ней. Прикрепленный файл является своего рода базой. Подскажите в какую сторону копать?Stormy
Что тут копать - открыть книгу, диапазон в массив, закрыть книгу, выгрузить нужные данные с условием. Или подробнее рассказать о предстоящих телодвижениях с файлами.
Что тут копать - открыть книгу, диапазон в массив, закрыть книгу, выгрузить нужные данные с условием. Или подробнее рассказать о предстоящих телодвижениях с файлами.wild_pig
wild_pig, nilem, Чтоб поподробнее, это издалека начать нужно, возможно решение будет совсем иным. Есть чертежи, которые рисуются в Автокаде (назовем просто чертеж) , есть сторонняя программа на Дельфе с базой Интебейс+ФайрБерд (назовем просто Прога) . В Проге вводятся данные по каждому заказу (операции, материал, технология выполнения, короче говоря, технологическая карта изделия). Прога может экспортировать свою базу и/или необходимую информацию в Экзель. Конструктор вводит данные в Прогу, кликает на кнопку отправить в Экзель ( создается файл 1.xls) в нем нужна спецификация. Дальше кликает на кнопку открыть Чертеж, открывается файл автокада 1.dwg с связанными таблицами. Файл создается на основе шаблона в котором пути между собой связаны. Если книга Экзеля 1, то и файл чертежа 1, если 2 - то 2 и т.д. Теперь вот вопрос. Спецификация представляет собой таблицу, а вот в шаблоне данные оттуда нужно разложить по листам. Поэтому я и хочу сделать выборку из другой книги и получить данные в шаблон. После создания темы, наткнулся на вариант с ADO сейчас пытаюсь с ним разобраться. Но в этом случае главный вопрос возникает, на какое событие вешать макрос. Как вариант на изменение в ячейке, в Автокаде связные таблицы могут вносить изменения в закрытый файл. Как-то так. Немного запутанно и непонятно
wild_pig, nilem, Чтоб поподробнее, это издалека начать нужно, возможно решение будет совсем иным. Есть чертежи, которые рисуются в Автокаде (назовем просто чертеж) , есть сторонняя программа на Дельфе с базой Интебейс+ФайрБерд (назовем просто Прога) . В Проге вводятся данные по каждому заказу (операции, материал, технология выполнения, короче говоря, технологическая карта изделия). Прога может экспортировать свою базу и/или необходимую информацию в Экзель. Конструктор вводит данные в Прогу, кликает на кнопку отправить в Экзель ( создается файл 1.xls) в нем нужна спецификация. Дальше кликает на кнопку открыть Чертеж, открывается файл автокада 1.dwg с связанными таблицами. Файл создается на основе шаблона в котором пути между собой связаны. Если книга Экзеля 1, то и файл чертежа 1, если 2 - то 2 и т.д. Теперь вот вопрос. Спецификация представляет собой таблицу, а вот в шаблоне данные оттуда нужно разложить по листам. Поэтому я и хочу сделать выборку из другой книги и получить данные в шаблон. После создания темы, наткнулся на вариант с ADO сейчас пытаюсь с ним разобраться. Но в этом случае главный вопрос возникает, на какое событие вешать макрос. Как вариант на изменение в ячейке, в Автокаде связные таблицы могут вносить изменения в закрытый файл. Как-то так. Немного запутанно и непонятно Stormy
Вроде все получилось, пока коряво, но это дело поправимо. Команда на запуск макроса из Автокада в Экзель работает. Теперь по старттопик вопросу.
Поясните, пожалуйста. [vba]
Код
Sub Example() Dim ADO As New ADO
ADO.DataSource = Workbook.FullName ' полный путь к книге ADO.Query ("SELECT * FROM [Лист1$A4:B20]") End Sub
[/vba] Полный путь к книге - вместо Workbook.FullName нужно указать путь в виде "C:/papka/excel.xls" ? Условие для запроса - будет что-то в виде ADO.Query ("WHERE [Лист1$A:A]=20")? То есть я хочу получить данные из файла excel.xls в диапазон Лист1 A4:B20 , если в A:A есть 20
Вроде все получилось, пока коряво, но это дело поправимо. Команда на запуск макроса из Автокада в Экзель работает. Теперь по старттопик вопросу.
Поясните, пожалуйста. [vba]
Код
Sub Example() Dim ADO As New ADO
ADO.DataSource = Workbook.FullName ' полный путь к книге ADO.Query ("SELECT * FROM [Лист1$A4:B20]") End Sub
[/vba] Полный путь к книге - вместо Workbook.FullName нужно указать путь в виде "C:/papka/excel.xls" ? Условие для запроса - будет что-то в виде ADO.Query ("WHERE [Лист1$A:A]=20")? То есть я хочу получить данные из файла excel.xls в диапазон Лист1 A4:B20 , если в A:A есть 20Stormy
Sub Example() Dim acad Dim ADO As New ADO acad = "'C:\Users\User\Desktop\AutoCad+Excel\[acad.xls]Лист1'!$A$4" ADO.Query ("SELECT F1 FROM acad;") Range("E1").CopyFromRecordset ADO.Recordset
ADO.Query ("SELECT F2 FROM acad;") Range("F1").CopyFromRecordset ADO.Recordset
' Закрываем соединение, чтобы не висело : ) ADO.Disconnect
'ADO.Query ("SELECT F1 FROM [Лист1$] UNION SELECT F2 FROM [Лист1$];") ' Range("G1").CopyFromRecordset ADO.Recordset
' Тут автоматически закроется соединение ' и уничтожиться объекты Recordset и Connection End Sub
[/vba] Уважаемые, помогите! Как правильно указать путь к другой книге?
Обн: [vba]
Код
ADO.DataSource = "C:\Users\User\Desktop\AutoCad+Excel\acad.xls" ADO.Query ("SELECT F1 FROM [Лист1$];")
[/vba] Оказалось дело в одной лишь строчечке Сам спросил - сам ответил
[vba]
Код
Sub Example() Dim acad Dim ADO As New ADO acad = "'C:\Users\User\Desktop\AutoCad+Excel\[acad.xls]Лист1'!$A$4" ADO.Query ("SELECT F1 FROM acad;") Range("E1").CopyFromRecordset ADO.Recordset
ADO.Query ("SELECT F2 FROM acad;") Range("F1").CopyFromRecordset ADO.Recordset
' Закрываем соединение, чтобы не висело : ) ADO.Disconnect
'ADO.Query ("SELECT F1 FROM [Лист1$] UNION SELECT F2 FROM [Лист1$];") ' Range("G1").CopyFromRecordset ADO.Recordset
' Тут автоматически закроется соединение ' и уничтожиться объекты Recordset и Connection End Sub
[/vba] Уважаемые, помогите! Как правильно указать путь к другой книге?
Обн: [vba]
Код
ADO.DataSource = "C:\Users\User\Desktop\AutoCad+Excel\acad.xls" ADO.Query ("SELECT F1 FROM [Лист1$];")
[/vba] Оказалось дело в одной лишь строчечке Сам спросил - сам ответил Stormy
Место для рекламы.
Сообщение отредактировал Stormy - Пятница, 07.03.2014, 18:12