Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 17:23   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Организация структуры данных

Я бы хотел посоветоваться с гуру. Ситуация такая:
Есть набор скриптов, назовем их условно "Программа", которые обеспечивает ввод необходимых данных, их обработку, сохранение и формирование таблиц нужного образца. Данные делятся на виды:
1. данные по объекту.
2. данные на фирму.
3. шаблоны таблиц.
Скрипты и данные по объекту хранятся в одном файле. Шаблоны хранятся в отдельном файле *.xls. данные на фирму хранятся в txt файле. Есть следующие неудобства:
1. Из-за хранения макросов и данных по объекту в одном файле, проблематично внесения изменения в текст макросов. Так как изменения не будет затрагивать ранее сохранных файлов. Так же при открытие нескольких файлов по сути открываются несколько наборов скриптов.
2. Для работы с шаблонами необходимо что бы файл с ними был открыт. сейчас он открывается в ручную, что как понимаете не удобно. Данные из файла с шаблонами переносятся путем копирования.

Что я хочу:
1. Отвязать макросы от файла с данными. Тем самым изменения в макросах будут автоматически распространяться на все файлы данных по объекту.
2. Научить программу работать с шаблонами не открывая файл.

Пути решения я вижу только в открытие файла с шаблонами и файла с макросами в фоне. В екселе это возможно с использованием файлов *.xla
Для чего я думаю будет рационально объединить шаблоны и макросы в один файл. Возникают следующие вопросы:
1. Стоит ли вешать файл *.xla на весь ексель, или лучше при загрузке файла с данными проверять если уже открытые книги с данными, и если нет таковых подключать файл *xla. Есть таковые есть, используем уже открытые файл. При закрытие книги с данными проверять, а остались ли другие книги, если таковых нет отключаем файл *.xla
2. Или один раз подключать файл *.xla на весь ексель и не загоняться по этому вопросу. В этом случае где лучше хранить файл *.xla. Ексель упорно подставляет локальный каталог на машине, а мне бы думается что лучше хранить не сетевом диске. Тогда заменив один файл, он заменяться для всех машин.

Мне почему-то больше нравиться первый вариант.
3. При любом раскладе появиться такая проблема. Часть информации я храню в переменных екселя. Например: название фирме, телефоны, адрес и т.п. Они являются одинаковыми (общими) для всех книг с данными по объектам. Рационально было бы их так же вынести в *.xla файл. Но как к ним в таком случае обращаться из макросов? Или наоборот как из макросов хранящихся в *.xla обратиться к переменным екселя в книгах с данным по объектам работ (адрес объекта работ, дата заключения договора и т.п.).
4. То же самой актуально для списков. Сейчас данные для списков хранятся в листе "Справочник", он в 99% будет одинаков для всех книг с данными по объектам. И было бы рационально перенести его в *.xla файл.

Будут ли у кого мысли по данной теме?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 19.04.2010, 17:32   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Мое мнение,хранить все в таблицах в Ацессе,свяжете таблицы.А взять в Excel любую инфу в любом виде всегда можно конкретным запросом.
я думаю много проблем сразу отпадет
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.04.2010, 17:35   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
1. Отвязать макросы от файла с данными.
Надо сделать в первую очередь

Цитата:
2. Научить программу работать с шаблонами не открывая файл.
Я в последнее время не заталкиваю шаблоны внутрь надстройки.
Просто создаю папку Шаблоны, в которой находятся файлы XLT - по одному файлу для каждого шаблона.

Цитата:
Часть информации я храню в переменных екселя.
В каких это ещё переменных экселя?
Не знаю таких...

Цитата:
Рационально было бы их так же вынести в *.xla файл. Но как к ним в таком случае обращаться из макросов?
Куда уж проще-то...
В XLA создаёте лист с кодовым именем (например, Settings)? и обращаетесь к ячейкам примерно так: x= Settings.[a1]
Если же записывать данные в имена файла XLA - то ещё проще: x = [Имя]

Цитата:
Или наоборот как из макросов хранящихся в *.xla обратиться к переменным екселя в книгах с данным по объектам работ (адрес объекта работ, дата заключения договора и т.п.).
А что, так не работает?
Код:
x=activeworkbook.Names("Имя").Value
Цитата:
То же самой актуально для списков. Сейчас данные для списков хранятся в листе "Справочник", он в 99% будет одинаков для всех книг с данными по объектам. И было бы рационально перенести его в *.xla файл.
Спискам место, разумеется, в XLA.

Кстати, XLA - это тот же XLS, только с изменённым свойством thisworkbook.IsAddin =True

Цитата:
Для работы с шаблонами необходимо что бы файл с ними был открыт
Это зачем же? Макрос не умеет открывать файлы?

Цитата:
Сообщение от doober Посмотреть сообщение
Мое мнение,хранить все в таблицах в Ацессе,свяжете таблицы.
Хороший совет, особенно учитывая количество этих ваших таблиц...
EducatedFool вне форума Ответить с цитированием
Старый 19.04.2010, 21:13   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Мое мнение,хранить все в таблицах в Ацессе,свяжете таблицы.А взять в Excel любую инфу в любом виде всегда можно конкретным запросом.
я думаю много проблем сразу отпадет
Понятия не имею как это сделать. Мое общение с Ацессом ограничивается парой занятий в институте. Не вдохновило... И это мягко сказано. Как правило его даже не ставлю. За более чем 10 летний опыт работе с виндой, ни разу не потребовался.
И как же я там буду хранить таблицы Excel? Для меня важно форматирование, границы ячеек, вырвавнивание, размер шрифта и т.п. Есть критичные параметры.
А так же не мало важное возможность быстрого и простого исправления шаблонов.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 19.04.2010, 21:28   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Я в последнее время не заталкиваю шаблоны внутрь надстройки.
Просто создаю папку Шаблоны, в которой находятся файлы XLT - по одному файлу для каждого шаблона.
Ни разу не работал с XLT. Можно подробнее?
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
В каких это ещё переменных экселя?
Не знаю таких...
Эээ... те которые задаются из экселя и доступны из VBA по Name. Тут меня уже поправляли что грамотно называть это "имена", но мне как-то религия не позволяет. (Имя чего? Человека, планеты или господа?) Хотя тут возможно я и не прав.
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А что, так не работает?
Код:
x=activeworkbook.Names("Имя").Value
Я пока еще не пробовал. Нахожусь на стадии проектирования. Как я понимаю, это долно рабоать без проблем.
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Кстати, XLA - это тот же XLS, только с изменённым свойством thisworkbook.IsAddin =True
Ну об это я уже прочитал.
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Это зачем же? Макрос не умеет открывать файлы?
А я его этому не обучал умышленно. Открывать из макроса файл так что бы он не появлялся физически в окне задач я не умею. И решил что пока пусть открывается явно. Тем более что это нужно делать один раз в день - утром.
Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Хороший совет, особенно учитывая количество этих ваших таблиц...
Только вот я его не оценил. В этом вопросе я чайник. Хотя и без свистка.

Как же все таки лучше подключать *.xla? Один раз для всего Excel, или проверять подключени при каждом запуске. И где лучше хранить сам файл?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 20.04.2010, 21:14   #6
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Я в последнее время не заталкиваю шаблоны внутрь надстройки.
Просто создаю папку Шаблоны, в которой находятся файлы XLT - по одному файлу для каждого шаблона.
Почитал я материал о XLT. Интересно... Но я не вижу пока как могу это использовать. Вернее, как использовать для создания таблиц. Вся штука в том, что таблицы у меня не постоянной длины. Они собираются как пазлы из данных из разных листов и переменных. А шаблоны по сути раздираются на отдельные строки, которые по мере надобности копируется в собираемую таблицу. Одна и та же строка или группа строк, при необходимости, может быть скопирована много кратно, при чем иногда не линейно.
С уважением, Алексей.

Последний раз редактировалось tae1980; 20.04.2010 в 21:23.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура и организация данных. Литература. JeyKip Общие вопросы C/C++ 1 25.10.2009 23:32
Курсовой по дисциплине "Структуры и организация данных в ЭВМ" (БНТУ) alex_fox Фриланс 4 19.10.2009 09:17
Организация данных в виде строк. Dmitry_F Общие вопросы C/C++ 1 20.09.2008 18:22
Организация данных в множестве Сапфира Помощь студентам 5 13.04.2007 07:04