182 / 33 / 3
Регистрация: 28.05.2015
Сообщений: 148
1

Как правильно организовать работу скриптов?

24.08.2017, 05:07. Показов 1322. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скажу сразу скрипты уже написаны, хотя в VBA я дуб дубом в отличии от VB6 поэтому возник вопрос.
Вопрос про VBA для Word 2003. Решил облегчить себе работу на производстве, автоматизировав некоторые документы. Имеется папка Бланков протоколов(электромонтёра-релейщика), где заполняются данные по результатам выполненных работ. Бланков порядка 50-и штук.
В этих документах есть общие места:
- шапка, где нужно изменить текущий день, месяц, год;
- тело документа с таблицами;
- завершающая таблица с ФИО работавших членов бригады.
В каждом документе я написал свой скрипт, который выполнял только третий пункт, т.к. иногда фамилий больше, а иногда меньше. А в Normal.dot я писал скрипт для первого пункта, т.к. ячейки таблицы для числа, месяца, года не меняются. Это шапка. Также в каждом документе я указал, что если путь к документу содержит слово "Бланки"
If InStr(ThisDocument.Path, "БЛАНКИ") > 0, то запретить сохранение документа, а перед закрытием оного делать операцию .Undo.

В итоге у меня в одной папке хранятся Бланки протоколов, в каждом из которых написан почти одинаковый скрипт. Я хочу написать универсальный скрипт в Normal.dot, т.к. сейчас появилась необходимость перенести папку на другой компьютер, а там, почему-то, работает всё не так, как на моём.

Отсюда возникает два вопроса:

1. Как в Normal.dot определить, что загрузился Word-документ именно с нужным названием, чтобы в нём искать нужные поля?
2. Как, если загрузился определённый документ, создать/удалить строки нужной таблицы(с фамилиями) и добавить в них контрол, например ComboBox(для выбора нужной фамилии)?

Или есть смысл оставить скрипты в своих документах? Так Word на компьютере больше ни для чего не используется.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2017, 05:07
Ответы с готовыми решениями:

Подскажите как правильно организовать работу с БД
Есть класс DBHelper: public class DBHelper extends SQLiteOpenHelper { public static final...

Как правильно организовать работу в Scilab?
Здравствуйте. Родственник попросил в авральном режиме решить ему уравнение в Scilab, установила...

Как правильно организовать работу с API сайта
Здравствуйте. Имеется биржа со своим API. 1) Так вот нужно мониторить некоторые данные с нее, с...

Как правильно организовать работу с переменными в многопоточном приложении
Здравствуйте. Вот такой код: int min = 1, max = 1000; private void main() { for(int...

6
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.08.2017, 08:28 2
Я по Ворду не работаю, поэтому по скриптам ничего особо советовать не могу, но:
1. вероятно есть активныйдокумент.Path, по нему и определять.
2. т.к. "Word на компьютере больше ни для чего не используется", то может лучше его вообще не использовать, а перенести эти бланки в Эксель? Там проще работать с строками, да и выпадающий список сделать.
0
Модератор
Эксперт MS Access
11957 / 4825 / 779
Регистрация: 07.08.2010
Сообщений: 14,132
Записей в блоге: 4
24.08.2017, 08:41 3
Цитата Сообщение от CharlyChaplin Посмотреть сообщение
Имеется папка Бланков протоколов(электромонтёра-релейщика), где заполняются данные по результатам выполненных работ. Бланков порядка 50-и штук.
не могу угадать, чем они отличаются

видимо это
--заголовочная часть(дата.....)
--50 вариантов перечня работ
--переменный список работников

а надо ли для этого 50 бланков, может в екселе одним можно обойтись и макрос в него же записать
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.08.2017, 08:47 4
Ещё такая мелочь - вместо
Цитата Сообщение от CharlyChaplin Посмотреть сообщение
то запретить сохранение документа, а перед закрытием оного делать операцию .Undo.
может просто сделать файл только для чтения?
1
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
24.08.2017, 21:33 5
Лучший ответ Сообщение было отмечено CharlyChaplin как решение

Решение

Отсюда возникает два вопроса:

1.Как в Normal.dot определить, что загрузился Word-документ именно с нужным названием, чтобы в нём искать нужные поля?

2.Как, если загрузился определённый документ, создать/удалить строки нужной таблицы(с фамилиями) и добавить в них контрол, например ComboBox(для выбора нужной фамилии)?
1. Используте объект application у него имеются различные события и в т.ч. на открытие документа.
2. Смотрите следующий код

Добавлено через 15 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub TableSample()
    With ActiveDocument
        .Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _
            4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
            wdAutoFitFixed
        With .Tables(1)
            .Rows(2).Delete
            .Rows(.Rows.Count).Select
            Selection.InsertRowsBelow 1
        End With
    End With
End Sub
 
Sub InsertingCombo()
    Dim s As Shape
    ActiveDocument.Shapes.AddOLEControl "Forms.ComboBox.1", Selection.Range
    With ActiveDocument.Shapes(1)
   'Пepeмeщeниe ComboBox'a в тoчкy (2 cм,2 cм) _
      oтнocитeльнo лиcтa
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        .Left = MillimetersToPoints(20)
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
        .Top = MillimetersToPoints(20)
    End With
End Sub
В первой процедуре создается таблица (3 строки, 4 столбца), удаляется строка 2 и добавляется новая строка снизу таблицы.
Во второй процедуре добавляется ComboBox. Удачи!

Добавлено через 27 минут
Замечание к коду. Этот код вставляет activeX control, т.е. при печати и просмотре он (контрол) будет выглядеть как контрол, если нужно, чтобы комбобокс (или др. контрол) позволял делать выбор фамилии и не быть заметным при просмотре и печати то используйте поля Ворда (formfields collection). Но тогда вам нужно будет понять как работают электронные бланки (формы) в Ворде.
1
182 / 33 / 3
Регистрация: 28.05.2015
Сообщений: 148
25.08.2017, 04:55  [ТС] 6
Цитата Сообщение от shanemac51 Посмотреть сообщение
не могу угадать, чем они отличаются
видимо это
--заголовочная часть(дата.....)
--50 вариантов перечня работ
--переменный список работников
а надо ли для этого 50 бланков, может в екселе одним можно обойтись и макрос в него же записать
Это 50 Word-файлов.

Скинул ради примера 3 из них.
Вложения
Тип файла: rar БЛАНКИ(включить макросы).rar (176.2 Кб, 4 просмотров)
0
182 / 33 / 3
Регистрация: 28.05.2015
Сообщений: 148
25.08.2017, 04:59  [ТС] 7
Цитата Сообщение от Homarty Посмотреть сообщение
при печати и просмотре он (контрол) будет выглядеть как контрол, если нужно, чтобы комбобокс (или др. контрол) позволял делать выбор фамилии и не быть заметным при просмотре и печати то используйте поля Ворда (formfields collection). Но тогда вам нужно будет понять как работают электронные бланки (формы) в Ворде.
Я нашёл решение данной проблемы в оформлении, которое поддерживает сам контрол. Пример я привёл во вложении сообщения выше.
0
25.08.2017, 04:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2017, 04:59
Помогаю со студенческими работами здесь

Как правильно организовать работу по UART с SIM-900
ATMiko 328P в варианте Uno будет работать с SIM-900. Код написан на Си без ардуино-примочек. Приём...

Работа с остатками. Как правильно организовать работу в многопользовательском режиме?
Здравствуйте. Имеется некоторая таблица с остатками. CREATE TABLE NEW_PARTY ( CD_PARTY ...

Как правильно организовать работу при создании презентации (мультимедийного проекта)?
Всем доброго времени суток) Первоначальная проблема заключается в том, что во флеше я новичок - но...

Как правильно импортировать отдельный файл скриптов (*.as) в проект?
Как это сделать правильно? Делал я так: 1. Создал файл move.as. Его содержание (это...

Как организовать работу?
помогите пожалуста как реализовать такое приложение на Visual C++ Оценка экспорта...

Как правильно создаются фильтры против скриптов и SQL иньекций
Здравствуйте Подскажите пожалуйста - как правильно создаются фильтры против скриптов и SQL...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru