Vba надстройка для word


Word Tools VBA – надстройка для автоматизации рутинных и монотонных операций в MS Word

Авторские права 2018-2020 от авторов VBATools

Эта программа является свободным программным обеспечением.

Вы можете распространять его и / или изменять в соответствии с условиями GNU General Public License, опубликованной фондом свободного программного обеспечения (Free Software Foundation)

Эта программа распространяется в надежде, что она будет полезна, но без каких-либо гарантий. Даже без подразумеваемой гарантии товарного состояния или пригодности для определенной цели. См. GNU General Public License для более подробной информации.

С Уважением VBATools.ru


Word Tools VBA-add – in for automation of routine and monotonous operations in MS Word

Copyright 2018-2020 by the contributors VBATools

This program is free software.

You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the (Free Software Foundation)

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. Without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

With Respect VBATools.ru


Надстройка: Macro Tools VBA – инструменты разработки макросов VBATools

Цели данного блога:

1. распространение надстройки MacroToolsVBA
2. улучшение функционала (исправление ошибок, внедрение новых функции)

Основные преимущества Macro Tools VBA:

• установка, не требующая от пользователя прав администратора
• открытый исходный код
• работает на версиях MS Excel 32 bit и 64 bit
• русскоязычный интерфейс
• бесплатная

Основные функции Macro Tools VBA:

• удаление паролей с проектов VBA, книг и листов Excel
• автоматическое форматирование кода, расстановка и удаление отступов в коде (функционал надстройки: Smart Indenter)
• автоматическая нумерации строк кода
• микро подстройка элементов в формах
• переименование элементов в формах одновременно с кодом
• обфускация кода в проекте VBA
• выдавать подробную статистику по проекту (кол-во строк кода, процедур, элементов на формах и т.д.)
• имеет свою базу заготовок кода (Code-Library), для типичных случаев с быстрой вставкой в новых макросах
• возможность дополнить Code-Library своими заготовками кода
• автоматическая распаковка и запаковка файла Excel

Файл для установки находится тут: Macro Tools VBA – инструменты разработки макросов VBATools.ru

Подпишитесь на нас в контакте что бы не пропустить важных обновлений https://vk.com/vbatools

Конструирование интерфейсов чаще всего используется при создании надстроек. Надстройка представляет собой невидимый документ со встроенным VBA-кодом и с собственными дополнениями к интерфейсу, автоматически открываемый приложением при запуске. При запуске он не показывает своё тело (т.е. содержимое документа текст, рисунки и пр.), а проявляется только своими изменениями в интерфейсе и подключенными макросами. Таким образом, приложение Microsoft Office дополняет свой функционал, и позволяет редактировать другие документы, используя вновь полученные функции.

Документ надстройки для Word имеет расширение .dotm. Фактически, надстройка для Word является обычным шаблоном с поддержкой макросов. Для надстроек Excel и PowerPoint имеются отдельные расширения — .xlam и .ppam соответственно.

Замечу, что надстройки .xlam и .ppam просто так не открываются в приложениях в качестве документа для редактирования, поэтому пока такая надстройка не готова, её сохраняют как обычный документ с поддержкой макросов. А вот шаблон .dotm можно открыть в Word именно как шаблон (по крайней мере, Ribbon XML Editor это делает), поэтому его можно сохранять шаблоном и в процессе разработки надстройки. Однако, я всё же рекомендую действовать единообразно, и исходники надстроек всегда держать в формате обычных документов с поддержкой макросов, и переводить их в шаблоны или надстройки только после полного окончания их разработки.

Итак, давайте попробуем построить надстройку Word, которая будет выглядеть, как отдельная вкладка, и содержать группу с кнопками, выполняющими некоторые действия. Пусть это будут некие действия с пробелами. Замечу, что процесс создания надстройки Excel ничем не отличается от создания надстройки Word и, умея создавать одно, вы будете уметь создавать другое.

Откроем Ribbon XML Editor, откроем в нём наш подопытный документ, и в окно для 2007-го интерфейса скопируем текст интерфейса нашей надстройки:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="Вкладка1" label="Полезные надстройки" insertBeforeMso="TabHome" keytip="Н">
                <group id="РаботаСПробелами" label="Работа с пробелами">
                    <button 
                        id="УдалитьПовторяющиесяПробелы" 
                        onAction="УдалитьПовторяющиесяПробелы" 
                        label="Удалить повторяющиеся пробелы" 
                        keytip="У" 
                        imageMso="WordArtSpacingMenu" 
                        size="large" 
                        screentip="Удалить повторяющиеся пробелы" 
                        supertip="Найти и заменить все повторяющиеся пробелы одним"/>
                    <button 
                        id="ПробелыВПереносыСтрок" 
                        onAction="ПробелыВПереносыСтрок" 
                        label="Пробелы в переносы строк" 
                        keytip="ПС" 
                        imageMso="PivotExpandField" 
                        size="large" 
                        screentip="Пробелы в переносы строк" 
                        supertip="Найти и заменить все пробелы переносом строки"/>
                    <button 
                        id="ПереносыСтрокВПробелы" 
                        onAction="ПереносыСтрокВПробелы" 
                        label="Переносы строк в пробелы" 
                        keytip="СП" 
                        imageMso="PivotCollapseField" 
                        size="large" 
                        screentip="Переносы строк в пробелы" 
                        supertip="Найти и заменить все переносы строк пробелами"/>                        
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

Ознакомьтесь с кодом интерфейса. Тут всё просто. Надстройка добавляет новую вкладку, и располагает на ней группу работы с пробелами, содержащую три кнопки. Для упрощения примера, в качестве иконок для кнопок я использовал максимально подходящие встроенные изображения. Вы можете использовать вместо них свои собственные, вы это уже умеете.

Первая кнопка удаляет все повторяющиеся пробелы. Довольно полезная функция, учитывая то, что правильная вёрстка в Word вообще не предполагает идущих подряд пробелов. Вторая кнопка преобразует все пробелы в переносы строк, а третья — обратное действие, т.е. переносы строк в пробелы. Тоже нужная функция для работы с последовательностями различных лексем.

Сгенерируем функции обратного вызова (Alt+F11). Скопируем шаблоны в буфер обмена (обращаем внимание на раскладку клавиатуры во избежание появления кракозябр). Закроем окно шаблонов и запустим документ. Перейдём в редактор Бейсика (Alt+F11) и вставим взятые в буфер обмена шаблоны функций вместо наших старых функций модуля RibbonCallbacks.

Теперь осталось написать на Бейсике нужные команды. Очевидно, нам понадобится функция поиска и замены. С помощью штатной функции записи макросов я выяснил, каким кодом осуществляется поиск и замена, и организовал это в виде отдельной функции, которую мы будем использовать внутри наших функций обратного вызова.

Итак, вставляем в код новую функцию:

'НайтиИЗаменить (компонент: button, атрибут: onAction), 2007
Sub НайтиИЗаменить(findString As String, replaceString As String)
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = findString
        .Replacement.Text = replaceString
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With 
End Sub

Функция принимает на вход строку для поиска и строку для замены, а внутри функции вставлен код из макроса, который записывался во время реального поиска и замены. Несомненно, в нём много лишнего, так как все эти параметры наверняка имеют значения по умолчанию. Тем не менее, для надёжности я оставил всё как есть — хуже уж точно не будет.

Теперь заполняем шаблоны процедур обратного вызова:

'УдалитьПовторяющиесяПробелы (компонент: button, атрибут: onAction), 2007
Sub УдалитьПовторяющиесяПробелы(control As IRibbonControl)
Dim NumCharsBefore As Long, NumCharsAfter As Long
    Do
        NumCharsBefore = ActiveDocument.Characters.Count
        Call НайтиИЗаменить("  ", " ")
        NumCharsAfter = ActiveDocument.Characters.Count
    Loop Until NumCharsBefore = NumCharsAfter
End Sub

'ПробелыВПереносыСтрок (компонент: button, атрибут: onAction), 2007
Sub ПробелыВПереносыСтрок(control As IRibbonControl)
    Call НайтиИЗаменить(" ","^p")
End Sub

'ПереносыСтрокВПробелы (компонент: button, атрибут: onAction), 2007
Sub ПереносыСтрокВПробелы(control As IRibbonControl)
    Call НайтиИЗаменить("^p", " ")
    Call НайтиИЗаменить("^w^p", "")
End Sub

Как видите, код элементарен, ничего сложного. В первой функции мы организовываем цикл, в котором сдвоенные пробелы меняем на одинарные, и который будет выполняться до тех пор, пока при очередной его итерации размер текста до и после поиска и замены не останется равным. Это будет означать, что сдвоенных пробелов в тексте уже не осталось.

Две последние функции ещё более элементарны. Там просто вызывается наша функция по поиску и замене, которая меняет пробел на символ абзаца (^p) или наоборот. В последнем случае мы ещё и удаляем появившийся в конце текста из-за неубирающегося символа абзаца лишний пробел (^w — чистое пространство, например, пробелы или табуляция).

Сохраняем код, закрываем редактор Бейсика и сразу проверяем работу кнопок в документе. Замечу, что закрывать редактор Бейсика не обязательно, можно просто сохранить в нём изменения и переключиться в окно документа. Если кнопки заработали, как надо, сохраняем документ как шаблон с макросами (.dotm) в папку:

C:Users[ИмяПользователя]AppDataRoamingMicrosoftWordSTARTUP

Теперь добавим нашу надстройку. Закрываем всё, открываем Word, лезем в Файл -> Параметры -> Надстройки -> Управление, выбираем «Надстройки Word» и нажимаем кнопку «Перейти». В открывшемся окне на первой же вкладке нажимаем «Добавить…» и выбираем наш файл. Нажимаем «ОК», и наша надстройка начинает действовать.

Введение

Целью создания этой статьи является сделать мини- шпаргалку для создания надстроек VSTO, здесь я попытался объединить собранные разрозненные крупицы информации по созданию надстройки VSTO на языке C# для Excel. Статья не претендует на целостное описание процесса создания надстройки, это скорее, «дорожная карта» для новичков, здесь описывается как по шагам сделать простейшую надстройку над Excel.

Excel представляет собой офисный «швейцарский нож», которым можно решить огромный спектр задач для работы с разнообразными данными. Но, как правило, для простой рутинной работы требуется очень много последовательных действий, которые повторяются из документа в документ. Для облечения рутины в Excel есть инструмент написания макросов VBA, на котором можно выполнить решение по малой автоматизации, сверстать таблицу, поправить шрифты, убрать формулы с листа. Но ограничения VBA очень быстро напомнят о себе, когда макрос начнет разрастаться, потребуется подключения к базе данных компании, получать данные от стороннего интернет ресурса или есть необходимость скрыть исходный код. Еще одно преимущество С# это возможность портировать код макросов на альтернативный офисный пакет без существенных издержек.

Visual Studio Tools for Office (VSTO, Visual Studio Tools для офиса) представляет собой набор средств разработки, позволяющий использовать всю функциональность .NET Framework для написания пользовательских функций офисного пакета. Надстройки, написанные в VSTO, являются полноценными скомпилированными программами, которые дополняют функционал офисного пакета и кастомизируют бизнес-логику конкретной фирмы.

Процесс написания надстройки

Для начала необходимо создать проект и выбрать тип «Надстройка VSTO для Exсel» в нашей любимой, а может не очень Visual Studio 2022, при необходимости выполнить установку соответствующих компонентов. Далее на следующей странице ввести имя проекта и выбрать платформу .NET Framework 4.8, как самую последнею. Увы платформа ограничивает максимально доступную версию используемого языка С# не выше 7.3, и некий «синтаксический сахар» из последних версий будет недоступен, что немного огорчает.

Сразу же при создании проекта открывается файл ThisAddIn.cs, представляющий собой точку доступа к функциям листа Excel, один недостаток, эти функции доступны только в этом файле, и помочь в этом нам сможет следующий код:

//Возвращает объект приложение Excel
public Excel.Application GetApplication()
{
	return Application;
}
//Возвращает объект активная рабочаяя книга
public Excel.Workbook GetActiveWorkBook()
{
	return (Excel.Workbook)Application.ActiveWorkbook;
}
//Возвращает объект активный рабочий лист
public Excel.Worksheet GetActiveWorksheet()
{
	return (Excel.Worksheet)Application.ActiveSheet;
}
//Возвращает объект активная ячейка
public Excel.Range GetActiveCell()
{
	return (Excel.Range)Application.Selection;
}

И теперь прописав в любом месте в приложения ниже идущий код мы можем получить доступ к функциям Excel:

Application application = Globals.ThisAddIn.GetApplication();
Worksheet worksheet = Globals.ThisAddIn.GetActiveWorksheet();
Range cell = Globals.ThisAddIn.GetActiveCell();
Workbook workBook = Globals.ThisAddIn.GetActiveWorkBook();

Данный код проще всего добавить в абстрактный класс и от него наследовать все функции нашего приложения:

protected abstract class AbstractFunctions
{
	protected readonly Application application = Globals.ThisAddIn.GetApplication();
	protected readonly Worksheet worksheet = Globals.ThisAddIn.GetActiveWorksheet();
	protected readonly Range cell = Globals.ThisAddIn.GetActiveCell();
	protected readonly Workbook workBook = Globals.ThisAddIn.GetActiveWorkBook();
	public abstract void Start();  
}

Например, функция удаления формул на выделенном участке листа Excel будет выглядеть таким образом:

internal class DeleteFormula : AbstractFunctions
{
	public override void Start()
	{
		cell.Value = cell.Value;                            //Удаляем формул
		worksheet.get_Range("A1", Type.Missing).Select();   //Фокус на ячейку А1   
	}
}

Далее необходимо добавить ленту Ribbon (Visual Designer) на которой будут располагаться кнопки запуска наших приложений, тут тоже хитрого ничего нет, и добавляется на точно также, как и все элементы в проект:

Далее, в коде нашей ленты мы создаем обработчики нажатий на кнопки, я предпочитаю разносить функции по классам и использовать генерацию события нажатия на кнопку в методе Load(). Это значительно упрощает код визуально и облегчает внедрение зависимостей (Dependency injection):

public partial class Ribbon1
{     
	private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
	{             
		button1.Click += (s, a) =>
		{
			DeleteFormyla deleteFormyla= new DeleteFormyla ();
			DeleteFormyla.Start();
		}
	}
}

Однако, можно создать обработчик кнопок и нажатием двойным кликом, но как говорилось раньше это не самое красивое решение.

Теперь кульминация, запуск и.. Не работает, необходимо создать сертификат надстройки, заходим в Projects-Propertis-Signing, создаем тестовый ключ Create Test Certificate. И теперь Ваша надстройка успешно работает.

Таким образом, за минимум действий можно создать рабочую надстройку Excel.

Содержание

  • 1 Microsoft Word 2003
  • 2 Microsoft Word 2007
  • 3 Microsoft Word 2010
  • 4 Microsoft Word 2013
  • 5 Microsoft Word 2016
  • 6 Автозагрузка надстроек в Microsoft Word
    • 6.1 Другие материалы по теме:
    • 6.2 Как добавить Google Drive в Microsoft Office
    • 6.3 Как добавить «Википедию» в Microsoft Office
    • 6.4 Как добавить случайные значения в Excel
    • 6.5 Как наполнить Word случайным текстом
    • 6.6 Как добавить документы-вкладки в Word
    • 6.7 Как вернуть классическое меню Microsoft Office 2003
    • 6.8 Как сделать наглядную временную шкалу в PowerPoint
    • 6.9 Как добавить карту в презентацию PowerPoint

Надстройки — это подключаемые модули, которые расширяют возможности приложения, в данном случае Microsoft Word. Существуют разные виды надстроек, остановимся пока на надстройках, основанных на шаблонах. Что такое шаблон в Word? Шаблон — это специальный файл, в котором содержатся различные сведения о стилях, структуре, параметрах страниц, содержащихся макросах и так далее, на основе которого можно создавать новые документы.

Существует два вида шаблонов — общие и шаблоны конкретных документов. Файлы шаблонов имеют расширение «.dot» или «.dotm». Общие шаблоны, в том числе и шаблон Normal.dot, в который по умолчанию сохраняются макросы записываемые макрорекордером, содержат настройки, доступные всем документам MS Word. Шаблон конкретного документа содержит настройки, доступные только для документов, основанных на этом шаблоне. В Word имеется ряд встроенных шаблонов документов, например шаблоны писем, контрактов, резюме и прочее. Выбрать нужный шаблон можно при создании нового документа.

как сделать надстройку для word

Кроме этого пользователи могут сами создавать шаблоны для своих документов. Один и тот же шаблон может использоваться и как общий шаблон и как шаблон документа. Теперь рассмотрим сам процесс загрузки и подключения шаблонов. Чтобы не возникало путаницы, условно разделим шаблоны на «загруженные» и «подключенные». Загруженными будем считать шаблоны, ставшие доступными приложению MS Word, а подключенными будем считать шаблоны, которые не только загружены, но и сделаны активными (в списке шаблонов и надстроек перед ними проставлены флажки). Глобальный шаблон Normal.dot по умолчанию всегда и загружен и подключен. Обратите внимание на скриншот ниже, загружено три шаблона, а подключен из них один (не считая шаблона Normal). 

как сделать надстройку для word

В зависимости от того насколько часто шаблон будет использоваться, расположить его можно в разных папках. Для того, чтобы шаблон автоматически загружался и также автоматически подключался при каждом запуске MS Word, расположить его нужно в папке по адресу Documents and Settings/Ваше имя/Application Data/Microsoft/Word/Startup.

Если шаблон разместить в папке Documents and Settings/Ваше имя/Application Data/Microsoft/Шаблоны, то загружать и подключать его нужно будет вручную (об этом чуть позже), кроме того при каждом следующем запуске приложения Word, этот шаблон будет в списке загруженных шаблонов и надстроек, но снова будет выключенным. В этом списке отображаются не только общие шаблоны из папки «Шаблоны», но и шаблоны, автоматически загружаемые при запуске MS Word. 

Еще один типичный случай, когда шаблон расположен в совершенно произвольной папке. Подключение рассмотрим в разных версиях в отдельности.

Microsoft Word 2003

Запускаем приложение, заходим в меню Сервис/Шаблоны и надстройки…

как сделать надстройку для word

В появившемся диалоговом окне «Шаблоны и надстройки» нажимаем кнопку «Добавить…» 

как сделать надстройку для word

Через открывшееся окно проводника находим папку с нужным шаблоном. После добавления этот шаблон появится в списке шаблонов и надстроек, слева от него будет установлена галочка. Шаблон (надстройка) загружен и подключен.

Microsoft Word 2007

В запущенном приложении нажимаем кнопку Office  и переходим в «Параметры Word». В диалоговом окне «Параметры Word» выбираем раздел «Надстройки». В поле «Управление» выбираем пункт «Надстройки Word» либо «Шаблоны» без разницы, после чего нажимаем кнопку «Перейти…».

как сделать надстройку для word

Появляется диалоговое окно «Шаблоны и надстройки», в нем нажимаем кнопку «Добавить…» и добавляем нужный шаблон.

как сделать надстройку для word

Это же диалоговое окно можно вызывать нажатием кнопки «Шаблон документа» на вкладке «Разработчик».

как сделать надстройку для word

Если такая вкладка в Вашем приложении отсутствует, ее необходимо предварительно отобразить, это упростит и ускорит доступ к окну управления шаблонами и надстройками. 

Microsoft Word 2010

В запущенном приложении переходим на вкладку «Файл», окрашенную в синий цвет, после чего переходим в «Параметры Word». В диалоговом окне «Параметры Word» выбираем раздел «Надстройки». В поле «Управление» выбираем пункт «Надстройки Word» либо «Шаблоны» без разницы, после чего нажимаем кнопку «Перейти…».

как сделать надстройку для word

В появившемся диалоговом окне «Шаблоны и надстройки» нажимаем кнопку «Добавить…» и выбираем шаблон, который собираемся установить.

как сделать надстройку для word

Тоже самое можно проделать еще быстрее, просто нажать кнопку «Шаблон документа» на вкладке «Разработчик».

как сделать надстройку для word

Но есть один нюанс, вкладка «Разработчик» по умолчанию в приложении отсутствует, ее необходимо предварительно отобразить, на вкладке собраны инструменты для работы с макросами и надстройками и отображение этой вкладки упростит и ускорит доступ к окну управления шаблонами и надстройками.

Microsoft Word 2013

Также как и в Word 2010, в Word 2013 надстройки (шаблоны) можно установить двумя способами:

1. Через вкладку «Файл»/Параметры/Надстройки, в поле «Управление» из выпадающего списка выбрать пункт «Надстройки Word» либо «Шаблоны» и кликнуть по кнопке «Перейти». В появившемся окне менеджера надстроек «Шаблоны и надстройки» при помощи кнопки «Добавить» выбрать файл устанавливаемой надстройки и нажать «ОК».

2. Отобразить на ленте вкладку «Разработчик» и кликнуть по кнопке «Надстройки» в группе кнопок «Надстройки» либо по кнопке «Шаблон документа» в группе кнопок «Шаблоны».

как сделать надстройку для word

После этого в появившемся окне «Шаблоны и надстройки» кликнуть по кнопке «Добавить» и выбрать файл надстройки, которую необходимо установить.

Процесс установки надстроек (шаблонов) для Word, на примере Word 2013 записан на видео и выложен в youtube (смотреть видео по установке надстроек).

Microsoft Word 2016

В Word 2016 установить надстройку/шаблон можно также, как и в предыдущих версиях, либо через вкладку «Файл»/Параметры/Надстройки с выбором пункта «Надстройки для Word» в поле «Управление», либо отобразить на ленте вкладку «Разработчик», кликнуть по кнопке «Надстройки» либо «Шаблон документа» и при помощи кнопки «Добавить» выбрать файл надстройки, которые требуется установить.

как сделать надстройку для word

Автозагрузка надстроек в Microsoft Word

Чтобы надстройка автоматически загружалась и подключалась при запуске Word, её необходимо разместить в определенной папке по адресу …/Microsoft/Word/Startup. Если в папке …/Microsoft/Word нет папки Startup, то её можно создать вручную. Та часть пути к папке, которая обозначена многоточием, может различаться в зависимости от версий Windows и Office. Универсальный способ при помощи которого можно определить весь путь к папке автозагрузки, независимо от версий операционной системы и Office — найти место расположения шаблона Normal.dot или Normal.dotm, подняться на один уровень вверх, это будет папка «…/Microsoft» найти и перейти в папку «Word». Путь к папке автозагрузки должен выглядеть примерно так:

C:UsersВашеИмяAppDataRoamingMicrosoftWordSTARTUP

Другие материалы по теме:

Конструирование интерфейсов чаще всего используется при создании надстроек. Надстройка представляет собой невидимый документ со встроенным VBA-кодом и с собственными дополнениями к интерфейсу, автоматически открываемый приложением при запуске. При запуске он не показывает своё тело (т.е. содержимое документа

текст, рисунки и пр.), а проявляется только своими изменениями в интерфейсе и подключенными макросами. Таким образом, приложение Microsoft Office дополняет свой функционал, и позволяет редактировать другие документы, используя вновь полученные функции.

Документ надстройки для Word имеет расширение .dotm. Фактически, надстройка для Word является обычным шаблоном с поддержкой макросов. Для надстроек Excel и PowerPoint имеются отдельные расширения — .xlam и .ppam соответственно.

Замечу, что надстройки .xlam и .ppam просто так не открываются в приложениях в качестве документа для редактирования, поэтому пока такая надстройка не готова, её сохраняют как обычный документ с поддержкой макросов. А вот шаблон .dotm можно открыть в Word именно как шаблон (по крайней мере, Ribbon XML Editor это делает), поэтому его можно сохранять шаблоном и в процессе разработки надстройки. Однако, я всё же рекомендую действовать единообразно, и исходники надстроек всегда держать в формате обычных документов с поддержкой макросов, и переводить их в шаблоны или надстройки только после полного окончания их разработки.

Итак, давайте попробуем построить надстройку Word, которая будет выглядеть, как отдельная вкладка, и содержать группу с кнопками, выполняющими некоторые действия. Пусть это будут некие действия с пробелами. Замечу, что процесс создания надстройки Excel ничем не отличается от создания надстройки Word и, умея создавать одно, вы будете уметь создавать другое.

Откроем Ribbon XML Editor, откроем в нём наш подопытный документ, и в окно для 2007-го интерфейса скопируем текст интерфейса нашей надстройки:

                                                                                                                                                                                 

Ознакомьтесь с кодом интерфейса. Тут всё просто. Надстройка добавляет новую вкладку, и располагает на ней группу работы с пробелами, содержащую три кнопки. Для упрощения примера, в качестве иконок для кнопок я использовал максимально подходящие встроенные изображения. Вы можете использовать вместо них свои собственные, вы это уже умеете.

Первая кнопка удаляет все повторяющиеся пробелы. Довольно полезная функция, учитывая то, что правильная вёрстка в Word вообще не предполагает идущих подряд пробелов. Вторая кнопка преобразует все пробелы в переносы строк, а третья — обратное действие, т.е. переносы строк в пробелы. Тоже нужная функция для работы с последовательностями различных лексем.

Сгенерируем функции обратного вызова (Alt+F11). Скопируем шаблоны в буфер обмена (обращаем внимание на раскладку клавиатуры во избежание появления кракозябр). Закроем окно шаблонов и запустим документ. Перейдём в редактор Бейсика (Alt+F11) и вставим взятые в буфер обмена шаблоны функций вместо наших старых функций модуля RibbonCallbacks.

Теперь осталось написать на Бейсике нужные команды. Очевидно, нам понадобится функция поиска и замены. С помощью штатной функции записи макросов я выяснил, каким кодом осуществляется поиск и замена, и организовал это в виде отдельной функции, которую мы будем использовать внутри наших функций обратного вызова.

Итак, вставляем в код новую функцию:

'НайтиИЗаменить (компонент: button, атрибут: onAction), 2007 Sub НайтиИЗаменить(findString As String, replaceString As String)     With Selection.Find         .ClearFormatting         .Replacement.ClearFormatting         .Text = findString         .Replacement.Text = replaceString         .Forward = True         .Wrap = wdFindContinue         .Format = False         .MatchCase = False         .MatchWholeWord = False         .MatchWildcards = False         .MatchSoundsLike = False         .MatchAllWordForms = False         .Execute Replace:=wdReplaceAll     End With  End Sub 

Функция принимает на вход строку для поиска и строку для замены, а внутри функции вставлен код из макроса, который записывался во время реального поиска и замены. Несомненно, в нём много лишнего, так как все эти параметры наверняка имеют значения по умолчанию. Тем не менее, для надёжности я оставил всё как есть — хуже уж точно не будет.

Теперь заполняем шаблоны процедур обратного вызова:

'УдалитьПовторяющиесяПробелы (компонент: button, атрибут: onAction), 2007 Sub УдалитьПовторяющиесяПробелы(control As IRibbonControl) Dim NumCharsBefore As Long, NumCharsAfter As Long     Do         NumCharsBefore = ActiveDocument.Characters.Count         Call НайтиИЗаменить("  ", " ")         NumCharsAfter = ActiveDocument.Characters.Count     Loop Until NumCharsBefore = NumCharsAfter End Sub  'ПробелыВПереносыСтрок (компонент: button, атрибут: onAction), 2007 Sub ПробелыВПереносыСтрок(control As IRibbonControl)     Call НайтиИЗаменить(" ","^p") End Sub  'ПереносыСтрокВПробелы (компонент: button, атрибут: onAction), 2007 Sub ПереносыСтрокВПробелы(control As IRibbonControl)     Call НайтиИЗаменить("^p", " ")     Call НайтиИЗаменить("^w^p", "") End Sub 

Как видите, код элементарен, ничего сложного. В первой функции мы организовываем цикл, в котором сдвоенные пробелы меняем на одинарные, и который будет выполняться до тех пор, пока при очередной его итерации размер текста до и после поиска и замены не останется равным. Это будет означать, что сдвоенных пробелов в тексте уже не осталось.

Две последние функции ещё более элементарны. Там просто вызывается наша функция по поиску и замене, которая меняет пробел на символ абзаца (^p) или наоборот. В последнем случае мы ещё и удаляем появившийся в конце текста из-за неубирающегося символа абзаца лишний пробел (^w — чистое пространство, например, пробелы или табуляция).

Сохраняем код, закрываем редактор Бейсика и сразу проверяем работу кнопок в документе. Замечу, что закрывать редактор Бейсика не обязательно, можно просто сохранить в нём изменения и переключиться в окно документа. Если кнопки заработали, как надо, сохраняем документ как шаблон с макросами (.dotm) в папку:

C:UsersAppDataRoamingMicrosoftWordSTARTUP 

Теперь добавим нашу надстройку. Закрываем всё, открываем Word, лезем в Файл -> Параметры -> Надстройки -> Управление, выбираем «Надстройки Word» и нажимаем кнопку «Перейти». В открывшемся окне на первой же вкладке нажимаем «Добавить…» и выбираем наш файл. Нажимаем «ОК», и наша надстройка начинает действовать.

Программы, входящие в пакет Microsoft Office, имеют широчайший набор функций, о многих из которых пользователи даже не подозревают. С другой стороны, некоторых возможностей всё же не хватает. Часть таких пробелов можно закрыть с помощью надстроек от сторонних производителей. О наиболее интересных из них мы вам и расскажем.

Дополнения для Microsoft Office можно загрузить из официального магазина надстроек Office или с домашних страничек разработчиков. В первом случае они устанавливаются наподобие мобильных приложений, а во втором — как отдельные программы Windows. Ввиду этого дополнения могут замедлить запуск офисной программы или всей операционной системы. Незначительно, конечно, но всё же.

Как добавить Google Drive в Microsoft Office

Программы Office 2016 тесно связаны с OneDrive. Это очень хорошо, если вы всё ещё пользуетесь собственным облачным хранилищем Microsoft. Почему «всё ещё»? Напомню, совсем недавно редмондцы нежданно-негаданно урезали объём бесплатного дискового пространства, а чуть позже позволили его вернуть. Так себе история, хотя она совсем неинтересна тем, кто доверяет решениям от Google. Если вы среди них, устанавливайте плагин «Google Диска» для Microsoft Office.

как сделать надстройку для word

С ним вам станет проще открывать и сохранять рабочие документы из удалённого хранилища Google. Соответствующие меню появятся в разделах «Открыть» и «Сохранить».

Как добавить «Википедию» в Microsoft Office

Остаётся загадкой, как разрешались споры обо всём на свете до середины января 2001 года. Ведь именно в это время появилась «Википедия», которая положила конец бесконечности недостоверной и неструктурированной информации в интернете. Смутные были времена, о которых не стоит даже вспоминать. Мы живём сегодня и хотим сделать этот миг как можно лучше. Настройка «Википедия» как раз из этой оперы. Установите её, чтобы в пару кликов получить доступ ко всемирному кладезю знаний.

как сделать надстройку для word

К слову, нечто похожее уже есть в 2016-й версии офиса, но отдельная надстройка всё же полезнее. Например, утилита лучше структурирует результаты поиска и не просто растолковывает значения выделенных слов, но и вставляет их в ваш текст безо всякого копипаста.

Как добавить случайные значения в Excel

Минутка экстаза для тех, кто хоть раз испытывал эффективные приёмы Excel и наполнял для этого листы случайными значениями. Эта муторная задача в миллион раз проще с надстройкой Random Generator. Не нужно никаких функций и их аргументов!

как сделать надстройку для word

Random Generator заполняет выбранные ячейки числами, датами и значениями «истина» или «ложь». В описании утилиты указано, что она предназначена для Office 2013 и более поздних версий пакета.

Как наполнить Word случайным текстом

Предположу, что скорость печати среднестатистического пользователя Word колеблется около 200 символов в минуту. И она ускоряется до тысяч символов, когда необходимо заполнить макет или таблицу чем угодно, только чтобы оценить документ визуально. Надстройка Lorem Ipsum Generator как раз и пригодится в таких случаях.

как сделать надстройку для word

Жаль, конечно, что нет кириллицы и нельзя указать точное количество символов.

Как добавить документы-вкладки в Word

Интернет программирует наше поведение, поэтому пользователи неосознанно хотят применять свои браузерные привычки и в других программах. Например, некоторым нравится панель вкладок в самом Word вместо миниатюр на панели задач Windows. Никогда не встречали такого? Тогда попробуйте в деле Tabs for Word.

как сделать надстройку для word

Программа умеет раскрашивать вкладки в разные цвета, а также имеет несколько настроек, которые подгонят её поведение под ваши запросы. Работоспособность проверена на Office 2016. Вирусов нет.

Как вернуть классическое меню Microsoft Office 2003

Office 2016 полон действительно классных нововведений, от которых люди старой закалки отказываются лишь потому, что им претит ленточная структура панели управления, появившаяся в 2007-й версии пакета. Программа Classic Menu for Office накладывает олдскульную оболочку поверх последних технологий.

как сделать надстройку для word

Не берусь судить, насколько точно воспроизводится старый интерфейс, но, если верить тому, как нервно постукивает сердце, всё похоже на правду. Настроек здесь минимум.

Как сделать наглядную временную шкалу в PowerPoint

Создание временных шкал (timeline) — верный способ донести важную для исполнения информацию до всех причастных лиц. Несколько распечаток таких графиков можно приложить к основному приказу, чтобы ответственные всегда видели перед собой дату, после которой их лишат премии либо вообще попросят собрать вещи. В общем, Office Timeline — хороший инструмент для мотивации. По уверениям разработчиков, их продукт позволяет создавать временные шкалы самой разной сложности, однако для этого придётся изучить весь доступный инструментарий.

как сделать надстройку для word

Созданную в PowerPoint шкалу можно перенести в другую офисную программу, например в тот же Word.

Как добавить карту в презентацию PowerPoint

Не все люди хорошо представляют, где находится, например, Намибия. Поэтому, уважаемые мошенники, когда вы присылаете коммерческое предложение о продаже дешёвых намибийских алмазов прямо из шахты без посредников и СМС, будьте добры, составляйте нормальную презентацию с картой мира. Надстройка Office Maps вам в помощь.

как сделать надстройку для word

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

А какими дополнениями к офисному пакету программ пользуетесь вы?

Like this post? Please share to your friends:
  • Vba на сортировку excel от а до я
  • Vba на разных листах excel
  • Vba на английском excel
  • Vba массивы excel значения элементов массива
  • Vba максимальная дата excel