Вставка данных из MS Excel в основную надпись чертежа

Автор KillJoy, 11.08.14, 21:32:47

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

KillJoy

Задача:
- взять имя файла чертежа;
- найти совпадение в тексте документа MS Excel;
- из соседней ячейки в той же строке взять порядковый номер листа в комплекте;
- внести номер в заданную ячейку основной надписи.

Возможно ли решить такую задачу хотя бы в полуавтоматическом виде, то есть с выполнением макроса "поиск имени > вставка номера" для каждого открытого чертежа, не прибегая к программированию в чистом виде? Имеется ли вообще возможность вставить в ячейку основной надписи текст из заданной определенными правилами ячейки определенного документа MS Excel?

Poltava

ЦитироватьИмеется ли вообще возможность вставить в ячейку основной надписи текст из заданной определенными правилами ячейки определенного документа MS Excel
Насколько я знаю нет такой возможности на прямую. Но если не ошибаюсь что то подобное можно было реализовать в менеджере шаблонов но это по моему не лучший вариант. Как по мне лучшим решением был бы макрос в принципе с точки зрения программирования решал эти задачи по отдельности на разных языках то есть поиск в экселе через vba и заполнение штампа на питоне но вот как то совмещать пока в голову не приходило.

Slaviation

В прицепе предлагаемое решение (скрипт на Python) и табличка Excel

В табличке:
в первой колонке - список чертежей
во второй - значение для записи в основную надпись чертежа
в третьей - номер ячейки, в которую это значение писать.

В строках скрипта (изменить на свои):
8 - путь до таблички Excel
11 - путь до каталога с чертежами
14, 17, 20 -  номера колонок в табличке Excel, в которых записаны файлы чертежей, значения и номера ячеек основной надписи соответственно.

При изменении путей не забывать о двойных слэшах и префиксе "u".

Установить питон, если не установлен (https://www.python.org/download/releases/2.7.8/)
Его расширение pywin32 (http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download)
+
Excel и КОМПАС


KillJoy

Хм... Компас-МАКРО и Python 2.6.6 имеются, но макрос выполняется молча и без какого-либо результата. Что я делаю не так?

Poltava

может не хватает расширения pywin32 (хотя тогда наверно выдавало бы ошибку.)
И кстати макрос работает только с чертежами спецификации игнорируются.

Slaviation

ЦитироватьПожелания простые

1. Расширить скрипт для обработки файлов спецификаций.

2. Брать вводимый текст из двух ячеек: в одной порядковый номер листа, в другой их суммарное количество. Пример: "007/032". Если это слишком заморочно с точки зрения кода, я просто введу в Excel еще одну колонку с составным текстом.

3. Ввести номер ячейки основной надписи непосредственно в текст скрипта: "31" (графа "Копировал"). Вводить информацию в другие ячейки "внешним" образом необходимости нет, да и пользователи не смогут случайно изменить номер ячейки при вводе своих данных.

Пожелания простые.
1. Расширил.
2. В таблице excel значение, которое нужно записать в ячейку штампа сделал вычисляемым по формуле - строковая склейка значений следующих трех ячеек. Наверное, это то что надо.
3. В таблице Excel этот столбец просто скрыл.

KillJoy

#6
В приложении файл "плана проекта" в старой редакции. В новой примерно то же, только кругом ссылки и формулы, а колонки "формат", "кол-во листов" и "№№ листов" существуют в двух экземплярах – для основных листов (1–999) и дополнительных (1а–999щ).

На втором листе показан примерный вид того, как будет выглядеть отчет – набор исходных данных для скрипта. Для каждого чертежа, содержащего больше одного листа (по сумме основных и дополнительных листов), скрипт должен последовательно вписать в основные надписи листов порядковые номера из двух групп.

Примечания:
1. Обрабатывается только одна папка, указанная в теле скрипта. Поправка: схема старая – участвуют все вложенные папки.
2. Запас порядковых номеров – по 10 ячеек на основные и дополнительные листы (читать до первой пустой ячейки в каждой группе).

Вопросы:
1. В основную надпись документов-спецификаций текст не записывается – файл открывается и на этом все. Что, кроме расширения, нужно добавить в скрипт?
2. Стиль форматирования (@"/054" в данном примере) не учитывается – в основную надпись чертежа записывается только введенное в ячейку значение. Возможно ли передавать данные с учетом еще и стиля форматирования (то есть считывать именно то, что отображается, а не то, что вычисляется и форматируется)?

Slaviation


KillJoy

"Пустышка" для справки в приложении.

Slaviation


Slaviation

ЦитироватьОпробовал. Работает, но есть проблема: буквы в обозначении вставляются в документы в верхнем регистре. Надо, чтобы вставлялись как указано в таблице. (Не вижу в скрипте строк, в которых переменные переводятся в верхний регистр. Он так работает по умолчанию?)

И еще такое дело: столбцы с информацией для скрипта будут начинаться не с 1-го, а где-то с 20-го. Можно ли вынести в начало текста скрипта переменную с номером начального столбца? Конечно, можно просто увеличить количество обрабатываемых столбцов, но тогда скрипту придется обрабатывать слишком много лишней информации.

Поправил.

KillJoy



KillJoy

См. приложение. Пароль в личке.