Vba excel эта закладка

Содержание

  1. Использование закладок
  2. VBA Excel. Элемент управления TabStrip
  3. Элемент управления TabStrip
  4. Примеры кода VBA Excel с TabStrip
  5. Объект Bookmarks (Word)
  6. Замечания
  7. Методы
  8. Свойства
  9. См. также
  10. Поддержка и обратная связь
  11. Как добавить пользовательскую вкладку ленты с помощью VBA?
  12. 5 ответов
  13. Учебник
  14. Объект Bookmark (Word)
  15. Замечания
  16. Методы
  17. Свойства
  18. См. также
  19. Поддержка и обратная связь

Использование закладок

Область применения: Access 2013, Office 2013

Часто бывает полезно вернуться непосредственно к определенной записи после перемещения по набору записей без необходимости прокручивать каждую запись и сравнивать значения. Например, если вы пытаетесь найти запись с помощью метода Найти , но поиск не возвращает записи, вы автоматически помещаетсяе на любой конец набора записей. Если ваш поставщик поддерживает их, закладки можно использовать для пометки вашего места перед использованием метода Find , чтобы вы могли вернуться к своему расположению. Закладка — это значение типа Variant , которое однозначно идентифицирует запись в объекте Recordset .

Для фильтрации по выбранному набору записей можно также использовать переменный массив закладок с помощью метода Фильтра набора записей. Дополнительные сведения об этом методе см. в разделе Фильтрация результатов в разделе Работа с наборами записей далее в этой главе.

С помощью свойства Bookmark можно получить закладку для записи или задать текущую запись в объекте Recordset запись, определяемую допустимой закладкой. Следующий код использует свойство Bookmark для установки закладки, а затем возврата к записи с закладкой после перехода к другим записям. Чтобы определить, поддерживает ли набор записей закладки, используйте метод Supports .

Метод Supports рассматривается более подробно позже.

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

Источник

VBA Excel. Элемент управления TabStrip

Создание взаимосвязанных наборов данных на пользовательской форме VBA Excel с помощью элемента управления TabStrip (коллекция вкладок). Примеры кода.

Элемент управления TabStrip

Основное свойство коллекции вкладок – SelectedItem, которое возвращает текущую (активную) вкладку.

Основное событие (метод) коллекции вкладок – Change, которое происходит в момент перехода между вкладками.

Набор элементов управления, размещенный на элементе TabStrip, отображается на всех вкладках. Этим коллекция вкладок отличается от элемента MultiPage, у которого на каждой странице размещается свой набор элементов управления.

Несмотря на то, что на всех вкладках элемента TabStrip отображается один набор элементов управления, данными в этом наборе можно управлять с помощью метода Change, используя свойства SelectedItem и Value (числовой индекс вкладки, счет начинается с нуля).

По умолчанию в редакторе VBA Excel на элементе управления TabStrip отображены 2 вкладки. Добавить, удалить, переименовать или переместить вкладку можно через контекстное меню, кликнув по вкладке правой кнопкой мыши.

  • New Page – добавление новой вкладки;
  • Delete Page – удаление вкладки;
  • Rename… – переименование вкладки;
  • Move… – перемещение вкладки.

Примеры кода VBA Excel с TabStrip

Пример 1
Добавление и удаление вкладок элемента управления TabStrip с помощью кода VBA Excel.

Добавление 3-й, 4-й, 5-й и 6-й вкладок к двум, которые уже есть по умолчанию:

Источник

Объект Bookmarks (Word)

Коллекция объектов Bookmark , представляющих закладки в указанном выделенном фрагменте, диапазоне или документе.

Замечания

Используйте свойство Bookmarks , чтобы вернуть коллекцию Bookmarks для документа, диапазона или выделенного фрагмента. В следующем примере гарантируется, что закладка с именем temp существует в активном документе, прежде чем выбирать закладку.

Используйте метод Add , чтобы задать закладку для диапазона в документе. В следующем примере выделение помечается добавлением закладки с именем temp.

Используйте закладки (индекс), где индекс — это имя закладки или номер индекса, чтобы вернуть один объект Bookmark . Вы должны точно соответствовать написанию (но не обязательно заглавной) имени закладки. В следующем примере в активном документе выбирается закладка temp.

Номер индекса представляет позицию закладки в объекте Selection или Range . Для объекта Document номер индекса представляет позицию закладки в алфавитном списке закладок в диалоговом окне Закладки (щелкните Имя , чтобы отсортировать список закладок в алфавитном порядке). В следующем примере показано имя второй закладки в коллекции Bookmarks .

Свойство ShowHidden влияет на количество элементов в коллекции Bookmarks . Если параметр ShowHidden имеет значение True, скрытые закладки включаются в коллекцию Закладки .

Методы

Свойства

См. также

Поддержка и обратная связь

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

Источник

Как добавить пользовательскую вкладку ленты с помощью VBA?

Я ищу способ добавить пользовательскую вкладку в ленте Excel, которая будет содержать несколько кнопок. Я оценил некоторые ресурсы, обращаясь к ним через Google, но все выглядят изворотливыми и возмутительно сложными.

Что такое быстрый и простой способ сделать это? Я хочу, чтобы новая вкладка загружалась, когда мой VBA загружается в Excel..

ОБНОВЛЕНИЕ: Я попробовал этот пример из здесь, но получить последнюю требуемую ошибку:

5 ответов

AFAIK вы не можете использовать VBA Excel для создания пользовательской вкладки в ленте Excel. Однако вы можете скрыть/сделать видимым ленточный компонент с помощью VBA. Кроме того, ссылка, о которой вы говорили выше, предназначена для MS Project, а не для MS Excel.

Я создаю вкладки для своих приложений/надстроек Excel, используя эту бесплатную утилиту под названием Custom UI Editor.

Изменить: для размещения нового запроса OP

Учебник

Вот короткий учебник, как и обещал:

После того, как вы установили пользовательский редактор пользовательского интерфейса (CUIE), откройте его и нажмите «Файл» | Откройте и выберите соответствующий файл Excel. Убедитесь, что файл Excel закрыт, прежде чем открывать его через CUIE. В качестве примера я использую новый рабочий лист.

Щелкните правой кнопкой мыши, как показано на рисунке ниже, и нажмите «Отдельный пользовательский интерфейс Office 2007». Он будет вставлять «customUI.xml»

Далее Нажмите на меню Вставить | Пример XML | Пользовательская вкладка. Вы заметите, что базовый код будет автоматически сгенерирован. Теперь вы готовы изменить его в соответствии с вашими требованиями.

label=»Custom Tab» : Замените «Пользовательская вкладка» на имя, которое вы хотите предоставить своей вкладке. Пока назовите это «Джером».

В приведенной ниже части добавляется настраиваемая кнопка.

imageMso : Это изображение, которое будет отображаться на кнопке. «HappyFace» — это то, что вы сейчас увидите. Здесь можно загрузить больше идентификатора изображения.

onAction=»Callback» : «Обратный вызов» — это имя процедуры, которая выполняется при нажатии кнопки.

При этом создайте 2 кнопки и назовите их «JG Button 1» и «JG Button 2». Позвольте сохранить счастливое лицо как образ первого и позволить сохранить «Солнце» для второго. Измененный код теперь выглядит следующим образом:

Удалите весь код, который был сгенерирован в CUIE, а затем вставьте вышеуказанный код вместо этого. Сохраните и закройте CUIE. Теперь, когда вы откроете файл Excel, он будет выглядеть следующим образом:

Теперь часть кода. Откройте редактор VBA, вставьте модуль и вставьте этот код:

Сохраните файл Excel в качестве файла с поддержкой макроса. Теперь, когда вы нажимаете «Смайлик» или «Солнце», вы увидите соответствующее окно сообщения:

Надеюсь, это поможет!

Я смог выполнить это с помощью VBA в Excel 2013. Никаких специальных редакторов не требовалось. Все, что вам нужно, это редактор кода Visual Basic, доступ к которому можно получить на вкладке «Разработчик» . Вкладка «Разработчик» по умолчанию не отображается, поэтому ее необходимо включить в меню «Файл» > «Параметры» > «Настроить ленту». На вкладке «Разработчик» нажмите кнопку «Visual Basic». Запустится редактор кода. Щелкните правой кнопкой мыши в панели Project Explorer слева. Нажмите меню вставки и выберите модуль. Добавьте оба модуля ниже в новый модуль.

Выполните вызов LoadCustRibbon sub в открывшемся Wookbook и вызовите элемент ClearCustRibbon в событии Before_Close файла кода ThisWorkbook.

Я боролся, как сумасшедший, но на самом деле это правильный ответ. Для чего это стоит, я пропустил это:

  • Как говорят другие, нельзя создать ленту CustomUI с VBA, однако, вам не нужно!
  • Идея заключается в том, что вы создаете свой ленточный код xml с помощью файла Excel > Параметры > Настроить ленту и затем экспортируйте ленту в файл .customUI(это просто файл txt с xml в нем).
  • Теперь идет трюк: вы можете включать код .customUI в ваш .xlsm файл, используя инструмент MS, на который они ссылаются здесь, копируя код из. файл customUI
  • Как только он включен в файл .xlsm, каждый раз, когда вы его открываете, лента, которую вы определили, добавлен к ленте пользователя — но используйте или вы потеряете остальную часть ленты. При выходе из рабочей книги лента удаляется.
  • Здесь просто, создайте ленту, скопируйте xml-код, специфичный для вашей ленты из файла .customUI, и поместите его в оболочку, как показано выше (. your xml Jan Wijninckx 20 март 2014, в 07:32

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

Я наткнулся на следующую веб-страницу справки Microsoft — https://msdn.microsoft.com/en-us/library/office/ff861787.aspx. Это показывает, как настроить интерфейс вручную, но у меня были некоторые проблемы при указании на мой пользовательский код надстройки.

Чтобы заставить кнопки работать с вашими настраиваемыми макросами, настройте макрос в своих.xlam subs, которые вызывают, как описано в этом ответе SO. Вызов макроса excel из ленты. В принципе, вам нужно добавить параметр «control as IRibbonControl» в любой модуль, указанный на вашем ленточном xml. Кроме того, ваш XML файл ленты должен иметь синтаксис onAction = «myaddin! Mymodule.mysub» для правильного вызова любых модулей, загружаемых добавлением.

Используя эти инструкции, мне удалось создать excel add in (.xlam файл), на котором была добавлена пользовательская вкладка, когда мой VBA загружается в Excel вместе с добавлением. Кнопки выполняют код из add и пользовательские вкладки удаляются, когда Я удаляю добавление.

Источник

Объект Bookmark (Word)

Представляет одну закладку в документе, выделении или диапазоне. Объект Bookmark является членом коллекции Bookmarks . Коллекция Закладки содержит все закладки, перечисленные в диалоговом окне Закладка (меню Вставка ).

Замечания

Использование объекта Bookmark

Используйте закладки (индекс), где индекс — это имя закладки или номер индекса, чтобы вернуть один объект Bookmark . Вы должны точно соответствовать написанию (но не обязательно заглавной) имени закладки. В следующем примере в активном документе выбирается закладка temp.

Номер индекса представляет позицию закладки в объекте Selection или Range . Для объекта Document номер индекса представляет позицию закладки в алфавитном списке закладок в диалоговом окне Закладки (щелкните Имя , чтобы отсортировать список закладок в алфавитном порядке). В следующем примере показано имя второй закладки в коллекции Bookmarks .

Используйте метод Add , чтобы добавить закладку в диапазон документов. В следующем примере выделение помечается добавлением закладки с именем temp.

Используйте свойство BookmarkID с объектом диапазона или выбора, чтобы вернуть номер индекса объекта Bookmark в коллекции Bookmarks . В следующем примере отображается номер индекса закладки с именем temp в активном документе.

Используйте стандартные закладкисо свойством Закладки . В следующем примере закладка с именем «currpara» задается в расположение, отмеченное предопределенной закладкой «Para».

Используйте метод Exists , чтобы определить, существует ли закладка в выделенном фрагменте, диапазоне или документе. В следующем примере гарантируется, что закладка с именем temp существует в активном документе, прежде чем выбирать закладку.

Методы

Свойства

См. также

Поддержка и обратная связь

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

Источник

Применение закладок для заполнения различных бланков на основе документов Word из кода VBA Excel. Объект Bookmark и его свойство Range.

Работа с Word из кода VBA Excel
Часть 5. Bookmarks – закладки в документе Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Добавление закладок в шаблон

Закладки (Bookmarks) являются удобным средством для вставки изменяющихся реквизитов в шаблоны документов. К закладкам можно обращаться по имени и не заморачиваться подсчетом количества символов до того места, где должен быть вставлен текст.

Вставляются закладки в шаблон документа вручную. Например, для следующего шаблона

Шаблон договора аренды с закладками

Шаблон договора аренды с закладками

это можно сделать так:

  1. Вставляем в макет шаблона в места вставки изменяемых реквизитов поясняющий текст. В нашем шаблоне это – <Город>, <Дата>, <Наименование арендатора> и <Наименование арендодателя>. Реквизиты <Город> и <Дата> добавлены в ячейки таблицы, чтобы их можно было разместить в одной строке, а выровнять по разным краям. Границы ячеек оставлены для наглядности.
  2. Выделяем текст <Город> и вставляем закладку под именем Bookmark1 через меню: Вставка ⇒ Закладка. Добавляем остальные закладки: <Дата> – Bookmark2, <Наименование арендатора> – Bookmark3, <Наименование арендодателя> – Bookmark4.
  3. Сохраняем бланк документа как шаблон Word. Полный путь для нашего примера: «C:ТестоваяДокумент1.dotx».

Создание и заполнение бланка

Реквизиты, добавляемые в места вставки, отмеченные закладками, обычно хранятся в таблицах Excel. Но мы вставим их напрямую в код процедуры:

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

26

27

28

29

30

31

32

Sub Primer()

On Error GoTo Instr

Dim myWord As New Word.Application, myDocument As Word.Document

    ‘Создаем новый документ по шаблону

    Set myDocument = myWord.Documents.Add(«C:ТестоваяДокумент1.dotx»)

    myWord.Visible = True

With myDocument

    ‘Замещаем текст закладок

    .Bookmarks(«Bookmark1»).Range = «г. Омск»

    .Bookmarks(«Bookmark2»).Range = Format(Now, «DD.MM.YYYY»)

    .Bookmarks(«Bookmark3»).Range = «Каев Кай Гердович (ИП)»

    .Bookmarks(«Bookmark4»).Range = «ООО «Снежная королева»»

    ‘Удаляем границы ячеек

    .Tables(1).Borders.OutsideLineStyle = wdLineStyleNone

    .Tables(1).Borders.InsideLineStyle = wdLineStyleNone

End With

    ‘Освобождаем переменные

    Set myDocument = Nothing

    Set myWord = Nothing

‘Завершаем процедуру

Exit Sub

‘Обработка ошибок

Instr:

If Err.Description <> «» Then

    MsgBox «Произошла ошибка: « & Err.Description

End If

If Not myWord Is Nothing Then

    myWord.Quit

    Set myDocument = Nothing

    Set myWord = Nothing

End If

End Sub

В результате работы кода VBA Excel получаем заполненный бланк документа на основе шаблона Word:

Заполненный бланк договора аренды

Заполненный бланк договора аренды

ВикиЧтение

VBA для чайников
Каммингс Стив

Закладки в программном коде

Закладки в программном коде

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

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

Чтобы поместить закладку в строку программного кода (точнее, рядом со строкой программного кода; рис. 5.13), щелкните на кнопке Toggle Bookmark (Добавить закладку).

Все относящиеся к закладкам кнопки находятся в панели инструментов Edit (Правка), поэтому, чтобы получить доступ к ним, нужно отобразить эту панель инструментов на экране. Иначе можно использовать соответствующую команду меню (Edit=Bookmarks=Toggle Bookmark), но это существенно более длинный путь. (Это жестоко, но Microsoft не предусмотрела комбинации клавиш для закладки.) Закладок можно разместить столько, сколько вы пожелаете.

Ясно, что сама по себе закладка не принесет никакой пользы. Щелкайте на кнопках Next Bookmark (Следующая закладка) и Previous Bookmark (Предыдущая закладка) для последовательного перехода от закладки к закладке, пока не доберетесь до места назначения.

Чтобы удалить отдельную закладку, поместите текстовый курсор в строку с этой закладкой и снова щелкните на кнопке Toggle Bookmark. Если же закладок набралось столько, что использование команд перехода от закладки к закладке уже почти эквивалентно использованию полосы прокрутки, удалите все закладки сразу одним щелчком на кнопке Clear All Bookmarks (Удалить все закладки).

Читайте также

11.7.2. Изменения в коде

11.7.2. Изменения в коде
Как только в parseCommand() будут правильно отражены структуры данных, то запуск команд в правильном порядке становится довольно простым при достаточном внимании к деталям. Прежде всего, мы добавляем цикл в parseCommand() для запуска дочерних процессов,

Глава 5. Закладки

Глава 5. Закладки
Даже начинающим пользователям Интернета, как правило, не нужно объяснять, что такое закладки. Этот сервис («закладками» он называется в браузере Mozilla Firefox, в Internet Explorer он носит название «Избранное») осваивают едва ли не в первый день знакомства с Сетью,

Закладки

Закладки
Закладки – это весьма полезная вещь. Путешествуя по различным сайтам, вы наверняка не раз столкнетесь с интересными ресурсами, которые были бы не прочь посетить вновь. Можно, конечно, запомнить или куда-либо записать адрес необходимой веб-страницы, но есть и

4.2.1. Закладки и папки

4.2.1. Закладки и папки
Кнопка доступа к закладкам включена в состав Яндекс. Бара, но, помимо него, работать с закладками можно и через веб-интерфейс. Адрес доступа к нему — http://zakladki.yandex.ru/. Интерфейс очень простой, и разобраться в нем можно без каких-либо дополнительных

18. Сетевые подключения на аппаратном и программном уровнях

18. Сетевые подключения на аппаратном и программном уровнях
Создание сетевого подключения на аппаратном и программном уровнях – один из сложнейших этапов работы с любой операционной системой. В Windows XP предусмотрено несколько разных типов сетевых подключений, и каждый

В Закладки Яндекса

В Закладки Яндекса
В Интернете полно сервисов, которые предоставляют вам, опять же ко всеобщей радости совершенно бесплатно, место для хранения любимых закладок. Но я расскажу вам только об одном сервисе, который находится на известном нам Яндексе. Если вы уже

В Закладки Google

В Закладки Google
Другим подобным сервисом для создания закладок может стать соответствующий сервис Google (https://www.google.com/bookmarks). Но там также нужно вначале зарегистрироваться, после чего зайти в Закладки и заполнить нужные поля (рис. 3.34).

Рис. 3.34. Добавление закладок в

2.6. Сноски и закладки

2.6. Сноски и закладки
Вставка сносокПри создании научных работ, курсовых или дипломных (особенно по гуманитарным наукам) иногда бывает необходимо непосредственно в тексте указать точный источник цитаты. Для этого и в книге, и в электронном документе используют сноски.

Использование информации из окна обозревателя объектов в программном коде

Использование информации из окна обозревателя объектов в программном коде
Обозреватель объектов удовлетворит любое любопытство к объектам в проекте, но, кроме того, он может служить и довольно неплохим средством создания программного кода. После того как вы найдете

Роль меток в программном коде CIL

Роль меток в программном коде CIL
Вы. конечно, заметили, что в каждой строке программного кода реализации содержится префикс в форме лексемы IL_XXX: (например, IL_0000: IL_0001: и т.д.). Эти лексемы называются метками кода, и они могут иметь любой вид, какой вы только пожелаете (лишь бы

Г.2. Информация о программном обеспечении GNU/Linux

Г.2. Информация о программном обеспечении GNU/Linux
? http://www.gnu.org. Это Web-узел проекта GNU Project. Здесь можно загрузить всевозможные бесплатно распространяемые программы. Среди них и GNU-библиотека языка С, содержащая многие из описанных в данной книге функций. Здесь же приведена

2.4. Сноски и закладки

2.4. Сноски и закладки

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

3.4. Общие сведения о программном обеспечении

3.4. Общие сведения о программном обеспечении
В соответствии с принципом программного управления любой компьютер можно рассматривать как совокупность аппаратной (или технической) и программной частей.К настоящему моменту выделяют три вида программных

О программном сопровождении

О программном сопровождении
Приведенный список факторов не включил обычно приводимое качество: возможность сопровождения (maintainability). Чтобы понять почему, мы должны поближе взглянуть на лежащее в его основе понятие: сопровождение (maintenance) . Сопровождение начинается с

4.4.4. Закладки

4.4.4. Закладки
Браузер Safari позволяет сохранить адреса часто посещаемых страниц, добавляя их в закладки. Закладки в Safari — это аналог папки Избранное в обозревателе Internet Explorer.

Добавление в закладки ссылки на страницуЧтобы адрес текущей страницы добавить в закладки,

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

Sub Field_Name()
    With ActiveDocument.Bookmarks
        zn_ = InputBox(«Введите имя закладки», «Ну пожалуйста!!!», «Name»)
        If zn_ = «» Then zn_ = «Тьфу»
        .Add Range:=Selection.Range, Name:=zn_
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
End Sub

[/vba]
Прикольно — «Name» на русской раскладке = «Тьфу»


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Macedon

Пользователь

Сообщений: 105
Регистрация: 06.10.2013

#1

16.06.2017 16:40:55

Добрый день, форумчане!

Подскажите, пожалуйста, как правильно описать копирование в Word из Excel через закладки? Код у меня (найден в интернете) работает, но смущает, что я что-то лишнее написал :(

Если что, текст будет копироваться из разных ячеек, листов, а также целые таблицы (пока код только на ячейки с определенного листа).

Код
Sub OpenDocument()
 
Dim wda As Word.Application
 
Set wda = CreateObject("Word.Application")
 
With wda
.Visible = True
.Documents.Open "U:Documentik.docx"
.ActiveDocument.Bookmarks("Pervaya").Select
End With
 
Worksheets("qwerty").Activate
Range("B1").Copy
wda.Selection.PasteSpecial

With wda
.Visible = True
.Documents.Open "U:Documentik.docx"
.ActiveDocument.Bookmarks("Vtoraya").Select
End With

Range("C1").Copy
wda.Selection.PasteSpecial
 
End Sub

Прикрепленные файлы

  • Macro Word Excel.xlsm (18.83 КБ)
  • Documentik.docx (11.42 КБ)

 

panix1111

Пользователь

Сообщений: 149
Регистрация: 14.01.2016

#2

17.06.2017 10:38:44

Код не мой, но работает

Код
Sub CallDoc()
Call funOutputWord("" & ThisWorkbook.Path & "temlate.dotx", "" & ThisWorkbook.Path & "result.docx")

End Sub


'функция выгрузки в Word значений полей формы через закладки в шаблоне
Function funOutputWord(strPathDot As String, strPathWord As String) As Boolean
On Error GoTo Err_

Dim DlgUser As Integer, i As Long

    'проверяем наличие софрмированного ранее документа
    If Dir(strPathWord) <> "" Then 'если нашелся документ по заданому в strPathWord полному пути (вместе с именем)
        DlgUser = MsgBox("Документ с таким именем ранее уже был создан. Заменить его?", vbYesNo, "Внимание !!!")
        If DlgUser = vbNo Then 'если пользователь выбрал Нет - то открываем прежний вариант документа
            Set app = CreateObject("Word.Application") 'создаем объект Word, чтобы можно было работать с его методами и свойствами
            With app
                .Visible = True 'запускаем приложение Word
                .Documents.Open strPathWord 'открываем документ (по пути в переменной strPathWord)
            End With
            Set app = Nothing 'уничтожаем переменную
        Else 'если пользователь выбрал Да - то есть согласился перезаписать документ
            GoTo nn 'переходим по метке nn
        End If
    Else 'если не нашлось документа по заданому в strPathWord полному пути
nn:
        Set app = New Word.Application 'делаем ссылку на объект Word для создания нового документа
        app.Visible = True 'запускаем приложение Word
        app.Documents.Add strPathDot 'присоединяем к объекту Word шаблон по заданому пути
        With app.ActiveDocument 'делаем ссылку на активный документ - в данном случае тот что формируется
            'находим закладку по имени в заменяем ее на текст из поля формы
            
            'общая часть
            .Bookmarks.Item("bookmark_1").Range.Text = IIf(IsNull(Sheets(1).Cells(1, 1).Value), "", Sheets(1).Cells(1, 1).Value)
            .Bookmarks.Item("bookmark_2").Range.Text = IIf(IsNull(Sheets(1).Cells(1, 2).Value), "", Sheets(1).Cells(1, 2).Value)
            'и так далее. Если все букмарки назвать однотипно, то можно завернуть в цикл

            
            'если в шаблоне нужно заполнить таблицу - запускаем соответсвующую функцию
            'если заполнять таблицу не нужно - убираем эту строку
            'Call funOutputTableWordQuery(strPathDot, strPathWord)
            
            'Чистим незаполненные закладки
            With .Bookmarks
                For i = .Count To 1 Step -1
                    'если имя Bookmark совпадает с его содержимым
                    If .Item(i).Name = .Item(i).Range.Text Then
                        'Удаляем содержимое (вместе с ним удаляется и сама Bookmark)
                        .Item(i).Range.Text = ""
                    End If
                Next i
            End With

            .SaveAs strPathWord 'сохраняем созданный документ по заданному пути strPathWord
        End With
        Set app = Nothing 'уничтожаем переменную
    End If
    funOutputWord = True 'ставим флаг успешного выполнения функции
    
Exit_:
    Exit Function
Err_:
    funOutputWord = False
    Err.Clear
    app.Quit
    Resume Exit_
End Function

Прикрепленные файлы

  • xls_to_doc.zip (41.71 КБ)

Изменено: panix111117.06.2017 10:40:05

Мы в Екселе не работаем, мы в нём живём!

 

Macedon

Пользователь

Сообщений: 105
Регистрация: 06.10.2013

panix1111,большое Вам спасибо! Попробую адаптировать под свой шаблон:)

 

Дмитрий Князев

Пользователь

Сообщений: 51
Регистрация: 01.01.1970

#4

21.03.2018 16:44:29

Замечательный код, вот только у меня подтягивает из екселя значение созданное формулой, и у меня получается число с 8 знаками после запятой… Как мне изменить этот код для вставки форматированного текста ?

Код
 .Bookmarks.Item("bookmark_1").Range.Text = IIf(IsNull(Sheets(1).Cells(1, 1).Value), "", Sheets(1).Cells(1, 1).Value)
 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

Дмитрий Князев, попробуйте заменить value на text.
P.S. только второе :)

Изменено: Hugo21.03.2018 16:51:56

 

Не получается, в екселе 4,494 в ворд вытянуло 449,4….

ПыСы Интересно именно форматирование, потому что и суммы выводит без нулей, а как целые числа. При чем не пойму логику, одни с нулями другие без ((

Изменено: Дмитрий Князев21.03.2018 17:07:41

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#7

21.03.2018 19:59:52

Дмитрий Князев, придайте нужный формат с помощью функции ТЕКСТ на листе или Format в VBA.

Цитата
Дмитрий Князев написал:
IIf(IsNull(Sheets(1).Cells(1, 1).Value),…

Значение ячейки не может быть Null, так что это лишнее.

 

zmike77

Пользователь

Сообщений: 3
Регистрация: 10.10.2019

Добрый день всем!

Macedon

опубликовал простой макрос. Но в моем случае я открываю шаблон WORD’овского файла.

Если я просто открываю его из браузера, то автоматически создается файл Document1 и шаблон остается не тронутым, а в этом случае открывается шаблон для редактирования.

Можете подсказать, как сделать, чтобы создавался новый документ?

Заранее благодарю.

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#9

05.03.2020 16:25:10

Доброе время суток

Цитата
zmike77 написал:
и шаблон остается не тронутым
Код
With wda.Documents.Add(Template:="d:pathtemplateName.dotx")

AFAIK вы не можете использовать VBA Excel для создания пользовательской вкладки в ленте Excel. Однако вы можете скрыть/сделать видимым ленточный компонент с помощью VBA. Кроме того, ссылка, о которой вы говорили выше, предназначена для MS Project, а не для MS Excel.

Я создаю вкладки для своих приложений/надстроек Excel, используя эту бесплатную утилиту под названием Custom UI Editor.


Изменить: для размещения нового запроса OP

Учебник

Вот короткий учебник, как и обещал:

  • После того, как вы установили пользовательский редактор пользовательского интерфейса (CUIE), откройте его и нажмите «Файл» | Откройте и выберите соответствующий файл Excel. Убедитесь, что файл Excel закрыт, прежде чем открывать его через CUIE. В качестве примера я использую новый рабочий лист.

    Изображение 3733

  • Щелкните правой кнопкой мыши, как показано на рисунке ниже, и нажмите «Отдельный пользовательский интерфейс Office 2007». Он будет вставлять «customUI.xml»

    Изображение 3734

  • Далее Нажмите на меню Вставить | Пример XML | Пользовательская вкладка. Вы заметите, что базовый код будет автоматически сгенерирован. Теперь вы готовы изменить его в соответствии с вашими требованиями.

    Изображение 3735

  • Осмотрите код

    Изображение 3736

    label="Custom Tab": Замените «Пользовательская вкладка» на имя, которое вы хотите предоставить своей вкладке. Пока назовите это «Джером».

    В приведенной ниже части добавляется настраиваемая кнопка.

    <button id="customButton" label="Custom Button" imageMso="HappyFace" size="large" onAction="Callback" />
    

    imageMso: Это изображение, которое будет отображаться на кнопке. «HappyFace» — это то, что вы сейчас увидите. Здесь можно загрузить больше идентификатора изображения.

    onAction="Callback": «Обратный вызов» — это имя процедуры, которая выполняется при нажатии кнопки.

Demo

При этом создайте 2 кнопки и назовите их «JG Button 1» и «JG Button 2». Позвольте сохранить счастливое лицо как образ первого и позволить сохранить «Солнце» для второго. Измененный код теперь выглядит следующим образом:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="MyCustomTab" label="Jerome" insertAfterMso="TabView">
<group id="customGroup1" label="First Tab">
<button id="customButton1" label="JG Button 1" imageMso="HappyFace" size="large" onAction="Callback1" />
<button id="customButton2" label="JG Button 2" imageMso="PictureBrightnessGallery" size="large" onAction="Callback2" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Удалите весь код, который был сгенерирован в CUIE, а затем вставьте вышеуказанный код вместо этого. Сохраните и закройте CUIE. Теперь, когда вы откроете файл Excel, он будет выглядеть следующим образом:

Изображение 3737

Теперь часть кода. Откройте редактор VBA, вставьте модуль и вставьте этот код:

Public Sub Callback1(control As IRibbonControl)

    MsgBox "You pressed Happy Face"

End Sub

Public Sub Callback2(control As IRibbonControl)

    MsgBox "You pressed the Sun"

End Sub

Сохраните файл Excel в качестве файла с поддержкой макроса. Теперь, когда вы нажимаете «Смайлик» или «Солнце», вы увидите соответствующее окно сообщения:

Изображение 3738

Надеюсь, это поможет!

Понравилась статья? Поделить с друзьями:
  • Vba excel элемент множество
  • Vba excel экспорт в csv
  • Vba excel шрифт текста в ячейке
  • Vba excel шифрование текста
  • Vba excel что такое boolean