WordBasic и Macroviruses, Visual Basic, Статии, Програмиране - Програмиране C, Delphi, C #
Запознанството ми с Microsoft Word започна преди година и половина, когато за първи път трябваше да съставя доста голям текстов документ - моята теза. Сега трудно мога да си представя работното си място без познатата икона.
Можете да правите много в Word: пишете и редактирате текст, рисувате прости картинки, дори пишете книги. Има много книги, посветени на работата с Word, но те имат малко или никакво влияние върху макро езика - WordBasic.
Междувременно WordBasic е удобен и прост език за програмиране, който ви позволява да автоматизирате рутинната работа с тестови документи, да управлявате всякакви програми на Windows и дори да пишете вирус.
В дадените примери се опитах да демонстрирам най-полезните функции на WordBasic и да покажа възможностите на езика.
1. Общи бележки.
Най-лесният начин да създадете макрос е да използвате командата Инструменти-> Макро-> Стартиране на запис. Всички действия на потребителя преди натискане на бутона Стоп се записват в макроса и се възпроизвеждат, когато този макрос се изпълни. Този метод не позволява организиране на цикли и показване на съобщения на потребителя, следователно, за да напишете пълноценна програма, трябва да редактирате записания макрос. За да направите това, в Word 6.0 и 7.0 изберете командата Tools -> Macro -> Change. (Инструменти-> Макро-> VisualBasic редактор в Word97).
Пълно описание на командите WordBasic се доставя с Word, но не е инсталирано по подразбиране. Ако не можете да намерите този раздел във вашата помощна система, трябва да го инсталирате от дистрибуционния диск на Word.
Всяко ръководство за програмиране казва, че добрата програма трябва да бъде интерактивна, тоест трябва да може да води диалог с потребителя. Нека да видим как това може да се направи с помощта на WordBasic.
Нека напишем много кратка програма, която показва съобщение на екрана.
Първият параметър на функцията MsgBox определя текста на съобщението, вторият - вида на съобщението, т.е. икона и бутони, а третият задава заглавието на полето за съобщения.
Сега нека се опитаме да усложним програмата. Нека тя покаже съобщение, което казва „Затваряне на дума?“ и бутоните „Ok“ и „cancel“. Освен това оставете програмата да затвори Word, като щракнете върху Ok.
Тук използваме стойността, върната от функцията MsgBox, за да определим кой бутон е щракнал потребителят.
Ако функцията върне vbOK, т.е. потребителят избра бутона OK, извикваме метода Quit на обекта Application (обектът Application е самият Word).
Но това не е всичко. При излизане Word издава предупреждения, ако промените във файловете не са запазени. Нека модифицираме програмата, така че тези съобщения да не се показват. За да направите това, задайте свойството DisplayAlerts на обекта Application, който контролира показването на съобщения на екрана, на false и посочете параметъра wdDoNotSaveChanges (не запазвайте промени) за Application.Quit метод
Макросът е готов. Искате да изненадате колегата си? Препишете този макрос за него в шаблона Normal.dot, наречен Autoexec (макросите с това име се изпълняват автоматично при стартиране на Word).
3. Как да планирате почивки от дим.
Да предположим, че служителите във вашия отдел пушат твърде често или, обратно, са толкова увлечени от работа, че забравят да вечерят (това разбира се е малко вероятно).
Втората програма, която ще напишем, ще ви напомни, че вече можете да отидете да пушите или, да речем, да обядвате. Методът OnTime на обекта на приложението ви позволява да зададете кога да се стартира макросът. Синтаксисът за този метод е както следва:
Когато Когато указва времето за изпълнение, Name е името на макроса, който трябва да се изпълни, Tolerance е незадължителен параметър, указващ продължителността на времето, през което макросът трябва да бъде изпълнен.
В нашата програма съобщенията ще се издават на всеки час. Нека извикаме първия макрос AutoExec, така че да се стартира при стартиране на Word. В нашия случай методът onTime използва функциите Now за определяне на текущото време и TimeValue за задаване на интервала, равен на час. Макросът Message издава съобщение и задава следващия интервал на изпълнение.
Като леко модифицирате макроса, можете дори да напишете цял график за един работен ден. Единственото нещо, което трябва да запомните, е, че такива макроси са най-добре запазени в глобалния шаблон Normal.dot, така че да са винаги достъпни.