Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
182 / 33 / 3
Регистрация: 28.05.2015
Сообщений: 148

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

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

Студворк — интернет-сервис помощи студентам
Скажу сразу скрипты уже написаны, хотя в 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.08.2017, 05:07
Ответы с готовыми решениями:

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

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

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

6
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
24.08.2017, 08:28
Я по Ворду не работаю, поэтому по скриптам ничего особо советовать не могу, но:
1. вероятно есть активныйдокумент.Path, по нему и определять.
2. т.к. "Word на компьютере больше ни для чего не используется", то может лучше его вообще не использовать, а перенести эти бланки в Эксель? Там проще работать с строками, да и выпадающий список сделать.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12217 / 5060 / 812
Регистрация: 07.08.2010
Сообщений: 14,919
Записей в блоге: 4
24.08.2017, 08:41
Цитата Сообщение от CharlyChaplin Посмотреть сообщение
Имеется папка Бланков протоколов(электромонтёра-релейщика), где заполняются данные по результатам выполненных работ. Бланков порядка 50-и штук.
не могу угадать, чем они отличаются

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

а надо ли для этого 50 бланков, может в екселе одним можно обойтись и макрос в него же записать
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
24.08.2017, 08:47
Ещё такая мелочь - вместо
Цитата Сообщение от CharlyChaplin Посмотреть сообщение
то запретить сохранение документа, а перед закрытием оного делать операцию .Undo.
может просто сделать файл только для чтения?
1
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
24.08.2017, 21:33
Лучший ответ Сообщение было отмечено 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  [ТС]
Цитата Сообщение от shanemac51 Посмотреть сообщение
не могу угадать, чем они отличаются
видимо это
--заголовочная часть(дата.....)
--50 вариантов перечня работ
--переменный список работников
а надо ли для этого 50 бланков, может в екселе одним можно обойтись и макрос в него же записать
Это 50 Word-файлов.

Скинул ради примера 3 из них.
Вложения
Тип файла: rar БЛАНКИ(включить макросы).rar (176.2 Кб, 4 просмотров)
0
182 / 33 / 3
Регистрация: 28.05.2015
Сообщений: 148
25.08.2017, 04:59  [ТС]
Цитата Сообщение от Homarty Посмотреть сообщение
при печати и просмотре он (контрол) будет выглядеть как контрол, если нужно, чтобы комбобокс (или др. контрол) позволял делать выбор фамилии и не быть заметным при просмотре и печати то используйте поля Ворда (formfields collection). Но тогда вам нужно будет понять как работают электронные бланки (формы) в Ворде.
Я нашёл решение данной проблемы в оформлении, которое поддерживает сам контрол. Пример я привёл во вложении сообщения выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2017, 04:59
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru