![]() |
|
Модераторы: mihanik |
![]()
|
|
| Alex24 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.1.2012 Репутация: нет Всего: нет |
Подскажите пожалуйста. Есть общая таблица, 8 листов (по типу материала) и до 200 наименований материала в каждом листе. Макрос делает выборку и сохраняет результат в заранее подготовленный шаблон (считает смету на конкретный заказ). По прошествии времени есть необходимость все наименования из сгенерированной таблицы-сметы отыскать в общей, и обновить цены если они изменились. Поясните как это сделать, с VBA знаком по CorelDraw потому испытываю серьезные трудности. Большое спасибо!
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
В шаблон надо класть не значения, а ссылки на их расположение в прайсе.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| irinazanuda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 911 Регистрация: 23.6.2010 Репутация: нет Всего: 18 |
Ссылки не хотелось бы... По-другому никак нельзя??? Подобная проблема и у меня есть
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Обоснуйте. Вменяемо. Да пжалста... удалите имеющееся и перегенерите тем же скриптом новую версию с использованием новых данных. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| irinazanuda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 911 Регистрация: 23.6.2010 Репутация: нет Всего: 18 |
вот этим и занимаюсь каждую ночь.. Если вменяемо... или это кому?!... Понятно--- ну, "не могу я без базару"... есть коммерческая тайна какбе... ладно пусть мальчик пробует-- я посмотрю |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 1 Всего: 130 |
Тогда просто проходить циклом по смете и искать соответствующий товар в основной таблице.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Не, вот какая тебе разница - запускать скрипт перегенерации или запускать скрипт обновления, а? Более того - если какой-то идиот юзер внесёт в файл изменения, скрипт обновления может офигеть - а скрипт перегенерации отработает вне зависимости от деятельности прямоходящих. Тебе, тебе... ссылки - самое оно... не, не хочешь, не обновляй ссылки - при открытии документа Эксель будет запрашивать обновление, от которого можно отказаться, если нужны старые данные. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Alex24 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.1.2012 Репутация: нет Всего: нет |
Дело в том что макрос писал не я, с VBA знаком частично (несложные макросы для CorelDraw). Если не трудно выложите следующий код (как я это вижу):
Открытие таблицы прайс Открытие таблицы сметы Организация цикла нахождения всех элементов сметы (выбранные наименования) в таблице прайс в каждой из категория (8 листов по типу материала) Сравнение цены, внесение изменений Заранее огромное спасибо всем кто откликнется. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Такие работы не делаются дилетантами на коленке, тем более в серьёзных фирмах и для серьёзной работы. Их заказывают. И оплачивают, соответственно. Обращайтесь во фриланс. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Alex24 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.1.2012 Репутация: нет Всего: нет |
Не хотелось бы грубить Akina, тем более модератору, ну раз не хочется то и не буду. Все что вы написали я и сам понимаю. Но я не делитант, я раньше программировал но на другом языке. Собственно задачу поставленную я выполнил покопавшись 2 дня в хелпе. Однако остался вопрос удобства и мой вопрос следующий. Я использовал:
Set orderbook = Workbooks.Open ("заранее мне известный путь") 'для выборки (собственно сметы) И тоже самое для таблицы материалов из которой макрос выборки и запускался. Теперь задача стоит в готовый макрос добавить кнопочку "Обновить" которая вызывает диалоговое окно, пользователь выбирает залежавшуюся смету и она пересчитается с учетом текущих цен. Простой вопрос как мне при запуске макроса присвоить переменой скажем pricebook книгу из которой он запустился, так что бы переменная была доступна во всем модуле. И тоже самое для orderbook что бы она приняла таблицу которую откроет пользователь. Изменяюсь что так все заумно расписал, но практики давно не было. Заранее спасибо. Это сообщение отредактировал(а) Alex24 - 2.2.2012, 17:02 |
|||
|
||||
| Akina |
|
||||||||||||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
1) Объявить переменную на уровне модуля
2) Выполнить в процедуре/функции присвоение в переменную ссылки на текущую книгу
3) Не забыть почистить ссылку по завершении обработки
Только не таблицу, а лист. У Экселя нет таблиц. 1) Объявить переменную на уровне модуля
2) Выполнить в процедуре/функции присвоение в переменную ссылки на текущую книгу
3) Не забыть почистить ссылку по завершении обработки
PS. У меня создаётся стойкое ощущение, что ведётся программирование не на Visual Basic версии 6, а на встроенном офисном Visual Basic for Applications. Если так - Вы жестоко ошиблись веткой форума - эти языки хоть и называются похоже, и имеют сходный синтаксис, но различаются так же (если не больше), как, например, С и С++... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||||||||||||
|
|||||||||||||||||
| Alex24 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.1.2012 Репутация: нет Всего: нет |
Действительно вы правы Akina, только что это заметил, Visual Basic for Applications. Насколько это меняет то что вы написали?
Собственно еще раз попытаюсь объяснить, что ранее использовал Set orderbook = Workbooks.Open ("заранее мне известный путь") теперь мне нужна та же переменная, но для файла открытого через диалоговое окно пользователем (как сделать тоже присвоение но для выбраного пользователем файла) и тоже самое но для файла из которого запустился макрос. Далее обе переменные используются в процедуре обновления сметы с операторами With, поиском через .Find и т.д. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Ну я изначально предполагал... потому ошмётки кода намекают на объектную модель Экселя. Давайте-ка мы поедем туда где тепло... Добавлено через 1 минуту и 26 секунд Модератор: Тема перенесена. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| LOPUH |
|
|||
![]() Растение ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 15.2.2008 Где: Красноярск Репутация: 3 Всего: 4 |
Alex24, наиболее удобно вам, на мой взгляд, использовать семейство встроенных окон Dialogs. Тип диалога, позволяющий выбрать файл, будет msoFileDialogFilePicker. Вот хороший пример его использования из интернетов
|
|||
|
||||
| Alex24 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.1.2012 Репутация: нет Всего: нет |
LOPUH Большое спасибо. Тему можно закрыть во всем разобрался сам.
|
|||
|
||||
![]()
|
| Правила форума "Программирование, связанное с MS Office" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |