Vba with word 2007

I just came to know that macros in Word/Excel/PowerPoint can be programmed. That is awesome because I’ve a Word document with 70 tables for styling.

I’m a programmer but I don’t know VB, VBA or VB .NET. I’m confused with these three. I’m familiar with .NET programming using C#. Now I want to write new macros. Where should I get started? What are VB, VBA, VB.NET and which one should I learn? Please suggest some material.

If I learn for Word 2007 will that help with other Office applications life Excel & PowerPoint?

Robert Harvey's user avatar

Robert Harvey

177k47 gold badges333 silver badges499 bronze badges

asked Jul 9, 2010 at 6:23

pecker's user avatar

0

Here’s a brief explanation of the different Visual Basics:

  • Visual Basic 6 (VB6, or classic VB)
    • Released around 1998, this was the last iteration of Microsoft’s original «Visual Basic.» It has the beginnings of object-oriented development, but it requires the Visual Basic Runtime for applications to run. A lot of companies have used VB6 for internal business applications. It was superceded by VB.NET and the .NET Framework.
  • Visual Basic for Applications (VBA)
    • VBA shares the same code base as VB6 and in 1996 was available to be licensed to developers to include in their own applications. This is how VBA appears in Microsoft Office, as an embedded language that can be used to control Office’s various applications. It’s important to remember that VBA, which is still used to code office applications, is over a decade old and may feel as such when one is used to working with .NET.
  • Visual Basic .NET (VB.NET)
    • VB.NET was a radical departure from VB6. Though subsequent iterations of VB.NET have been referred to in sequence (e.g. VB7, VB8, etc.) by many developers, VB.NET shares very little with VB6 and VBA other than the BASIC syntax. Many consider it more of a new evolution in BASIC rather than an evolution in Visual Basic. Because it’s entirely different from VBA and VB6, you cannot not use VB.NET code directly in VBA.
    • Because VB.NET code compiles down to the same managed intermediate language code as C# and shares the same .NET APIs, you may feel more commonality between C# and VB.NET than VB6 and VB.NET from a programming perspective.

If you anticipate doing a lot of development in VBA, I would highly recommend the VBA Developer’s Handbook, Second Edition, by Getz and Gilbert.

Learning the VBA syntax for Word will certainly help you when you go to use Excel, Access, etc. However, each application has its own API that provides a set of objects and methods unique to its domain. For example, I’m very familiar with programming in VBA in Excel and Access, but I have never done macro programming in Word. Although the code syntax would be the same, I’d have to learn Word’s API to be able to program against it.

The nice thing about some of the Office applications (Excel, for example) is that you can record a macro, see what code it generates, and then tweak that code to do what you want. That’s largely how I got started in programming.

answered Jul 9, 2010 at 15:29

Ben McCormack's user avatar

Ben McCormackBen McCormack

31.8k46 gold badges145 silver badges221 bronze badges

There are some good answers here — I’d like to offer one more set of suggestions:

First, if supported in your environment, you can use Visual Studio 2005/8/10 and your C# skills to program against Office with «Visual Studio Tools for Office». See this thread for more details.

If you want to delve into VBA instead (which I personally love because development is so fast compared to VS), start with this article Ten Code Conversions for VBA, Visual Basic .NET, and C# which will show you samples from all three languages. Next, watch this webcast: Using Visual Basic for Applications (VBA) Every Day Is Easier Than You Think.

Thirdly- MSDN, read through this: Getting Started with VBA in Word 2010. 99% of it applies to Word 2007. There are many other articles linked from this one or you can always go to the main page of Office VBA Developer Center as a single jump page.

Then it’s probably time to get started to directly program. See how things work, learn Word’s Object Model, etc. You can always browse SO under the word-vba tag to see what other people are trying to do and the answers.

Community's user avatar

answered Jul 10, 2010 at 2:41

Todd Main's user avatar

Todd MainTodd Main

28.9k11 gold badges82 silver badges146 bronze badges

3

You always have MSDN.
If you go to Microsoft Word > Developer > Visual Basic and open up ThisDocument in the left menu, you will have the editor. If you press F2 you will get the libraries that can be used in Microsoft Word (the Object Browser). The easiest program would be the following:

Sub Hello()
    MsgBox "Hello World"
End Sub

When you have the sub marked, press F5 (to run).

In the Object Browser you will have three different objects, properties, functions and events. When you see something that strikes your interest, go to the reference for word vba and locate it.
[If the link changes, you can find it in the tree under MSDN Library > Office Development > 2007 Microsoft Office System > Word 2007 > Word 2007 Developer Reference > Word Object Model Reference]

I think the easiest thing to do is to define a problem you need fixed and try to program it, similar to learning any other language. Don’t make the problem to easy, but not to hard that you give up.

answered Jul 9, 2010 at 7:08

default's user avatar

defaultdefault

11.3k8 gold badges67 silver badges102 bronze badges

Язык программирования VBA

вMS Office 2007

1.Макрорекордер: начало автоматизации.

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

1.1. Макрорекордер — универсальный помощник

Для автоматического создания макросов служит макрорекордер. Мы рассмотрим работу с ним на примере Microsoft Office Word 2007. Если отвлечься от VBA и говорить об обычной работе в Word, то окажется, что с помощью макрорекордера можно записывать действия, которые мы выполняем в программе. Например, записывается ввод и удаление текста, нажатие на кнопки вкладок, форматирование текста и так далее.

Алгоритм работы с макрорекордером выглядит так:

1.Включить запись макроса, настроив некоторые параметры.

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

3.Остановить запись.

4.Использовать записанный макрос по необходимости.

Макрорекордер, помимо написания макросов, поможет вам лучше изучить возможности VBA и тонкости объектных моделей приложений Office (мы поговорим о них ниже). Например, вы не знаете точно, как именно реализовать то или иное действие программно, но знаете, как это делается вручную. Просто запишите макрос с нужными вам действиями, а потом откройте его в редакторе VBA. Вы сможете проанализировать полученный код, а возможно и включить его фрагменты в свое приложение.

Лучший способ освоить макрорекордер — это попытаться самостоятельно записать макрос. Этим мы сейчас и займемся.

1.2.Форматирование текста в MS Word

Запишем в Microsoft Word макрос, который по нажатию комбинации клавиш форматирует выделенный текст определенным образом.

1.2.1. Задание

Создать макрос в Microsoft Word, который автоматически форматирует выделенный текст следующим образом:

Шрифт: Times New Roman, 14-й, курсивный

Цвет шрифта: красный

Назначить вызов макроса по нажатию комбинации клавиш Alt + Ctrl + Shift + A и по нажатию настраиваемой кнопки.

1.2.2. Решение

Выделим первый участок текста, который нужно отформатировать.

Прежде чем записывать макрос, важно очень точно спланировать свои действия. Если вы что-то сделаете не так во время записи, неправильные действия будут записаны в макрос. Например, выделять текст нужно до начала записи. Иначе в макрос попадет команда выделения текста и каждый раз после запуска программа будет выделять текст, а нам это не нужно.

Выберем вкладку ленты Вид и нажмем на ней направленную вниз треугольную стрелку под надписью Макросы (рис. 1.1.).

Рис. 1.1. Начало записи макроса В открывшемся меню нам нужна команда Запись макроса.

Появится окно для настройки свойств макроса (рис. 1.2.). Рассмотрим поля этого диалога.

Имя макроса: в это поле нужно ввести имя макроса. Имена макросов должны начинаться с буквы, не должны содержать пробелов. Желательно давать макросам какие-нибудь осмысленные имена. Например, Формат_Times_Красный.

Назначить макрос кнопке: диалоговое окно назначения макроса настраиваемой кнопке.

Назначить макрос клавишам: диалоговое окно назначения макроса сочетанию клавиш на клавиатуре.

Рис. 1.2. Окно настройки свойств макроса

В поле Макрос доступен для надо выбрать место сохранения макроса, которое определяет его доступность для различных документов. По умолчанию здесь выбран параметр Всех документов (Normal.dotm).

Normal.dotm —это общий шаблон, доступный для всех документов Microsoft Word. Если макрос будет сохранен в Normal.dotm — вы сможете запустить его из любого Word-документа. Не следует сохранять все записываемые вами макросы в Normal.dotm. Делайте это лишь тогда, когда вы точно уверены в том, что макрос понадобится вам в различных документах. Мы выберем в этом поле значение Документ 1 (документ). Именно так здесь называются еще не сохраненные документы. Выбрав этот пункт, мы сохраняем макрос в текущем документе, то есть сможем вызывать макрос лишь из этого документа.

В поле Описание содержится описание макроса. Вы вполне можете оставить его пустым.

Кнопка OK начинает запись макроса. Но до начала записи воспользуемся кнопкой Назначить макрос клавишам. Появится окно настройки комбинации клавиш для запуска макроса (рис. 1.3.).

Чтобы назначить макросу сочетание клавиш, нужно установить курсор в поле Новое сочетание клавиш и нажать нужное сочетание на клавиатуре. В случае, если это сочетание не назначено ранее для быстрого вызова каких-либо команд, под полем

Текущие сочетания вы увидите надпись Текущее назначение: [нет]. Если вы увидите здесь что-нибудь другое — лучше всего поискать свободное сочетание. Иначе вы можете столкнуться с неожиданным поведением знакомых вам горячих клавиш.

Рис. 1.3. Настройка сочетания клавиш для запуска макроса

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

знакомый вам Normal.dotm. Сохранять привязку сочетаний клавиш к макросам в Normal.dotm следует лишь в том случае, если вы, во-первых, на предыдущем шаге сохранили макрос в Normal.dotm, а во-вторых, хотите, чтобы данное сочетание работало во всех остальных документах MS Word, а не только в текущем документе.

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

В процессе записи макроса указатель мыши дополняется значком с изображением кассеты. Щелчок правой кнопкой не действует. Поэтому нам нужно отформатировать текст, пользуясь вкладками ленты Microsoft Word. Так и поступим. Настроим необходимые параметры форматирования, снова перейдем на вкладку Вид и нажмем там на кнопку Остановить запись (рис. 1.4.)

Рис. 1.4. Остановка записи макроса

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

После записи макроса самое время его протестировать. Для этого выделим текст и нажмем Ctrl + Alt + Shift + A. Если все сделано правильно — текст будет отформатирован.

Но мы выполнили не все части задания. Как вы помните, нужно было настроить запуск макроса с помощью кнопки.

Для этого нажмите кнопку настройки панели быстрого доступа (она находится справа от панели) и в появившемся меню выберите пункт Другие команды. Появится окно для настройки команд Microsoft Word (рис. 1.5.).

Всписке Выбрать команды из выберите Макросы.

Вполе, которое расположено ниже, появятся ссылки на доступные макросы. Выделите нужный и нажмите на кнопку Добавить>>. Ссылка на него появится в поле Настройка панели быстрого доступа. В списке настройки этого поля выберем документ, который мы в данный момент редактируем — тем самым мы внесем изменения лишь в панель быстрого доступа этого документа.

Рис. 1.5. Назначение макроса кнопке панели быстрого доступа

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

Здесь вам нужно выбрать понравившийся значок для кнопки макроса и ввести в поле Отображаемое имя текст, который будет появляться при наведении на кнопку вызова макроса указателя мыши. Вот, что получилось в итоге (рис. 1.6.).

Рис. 1.6. Кнопка для быстрого вызова макроса на панели быстрого запуска

Сохраняя файл Microsoft Word, содержащий макросы, обязательно убедитесь в том, что вы сохраняете его в формате .docm (Документ Word с поддержкой макросов). Дело в том, что используемый по умолчанию формат .docx (Документ Word) не поддерживает макросы. Если вы сохраните документ с макросами в таком формате, результаты работы будут утеряны.

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

Чтобы использовать макросы — свои и тем более созданные другими — вам, возможно, понадобится изменить настройки безопасности Microsoft Office.

1.3. Макросы и безопасность

Microsoft Office снабжен собственной системой безопасности, основная задача которой — противодействие проникновению макровирусов — вредоносных программ на языке VBA.

Макровирусы — это основная проблема, которую породил язык программирования, встроенный в офисные программы. Безопасность работы с макросами сводится к очень простому правилу: не следует разрешать выполнение макросов, если вы не знаете точно, для чего нужны эти макросы.

Если вы открываете документ, который содержит подозрительный, с точки зрения системы, макрос, при настройках безопасности по умолчанию этот макрос блокируется. В Microsoft Word выводится такое сообщение (рис. 1.7.).

Рис. 1.7. Предупреждение системы безопасности

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

Включить это содержимое, либо запретить, выбрав Установить защиту от неизвестного содержимого.

Для настройки системы безопасности в Microsoft Word нажмите на кнопку Microsoft Office, далее — на кнопку Параметры Word. В левой части появившегося окна выберите пункт Центр управления безопасностью. На странице центра управления безопасностью нажмите кнопку Параметры центра управления безопасностью. Появится окно настройки параметров макросов (рис. 1.8.).

Практика показывает, что при интенсивном использовании собственных макросов, удобнее и безопаснее всего использовать пункт, установленный по умолчанию —

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

Рис. 1.8. Центр управления безопасностью: настройка безопасности макросов

Теперь, когда мы обсудили безопасность макросов, давайте поговорим о макросах в Microsoft Excel.

1.4. Копирование данных в MS Excel

Процесс создания макросов в MS Excel очень похож на создание макросов в MS Word. Но есть здесь и свои тонкости. Мы создадим макрос, который по нажатию комбинации клавиш копирует значения выделенных пользователем ячеек в другие ячейки.

1.4.1. Задание

Создать макрос в Microsoft Excel, который предназначен для копирования выделенной строки из одного листа (пусть это будет некий прайс-лист) в текущую строку (начиная с выделенной ячейки) другого листа книги Excel. После работы макроса на экране должен быть отображен лист, с которого осуществлялось копирование.

Назначить вызов макроса по нажатию комбинации клавиш Ctrl + Й

Это задание можно рассматривать как создание автоматической «записной книжки» емкостью в одну запись.

1.4.2. Решение

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

Рис. 1.9. Начало записи макроса в MS Excel

Настроить быстрый вызов макроса можно в том же окне, где задается имя макроса и место сохранения. Имя Excel-макросов подчиняется тем же законам, что и в MS Word, а в качестве горячих клавиш предлагается использовать клавишу в комбинации с Ctrl.

После начала записи щелкнем правой кнопкой мыши по выделенной области и выберем в появившемся меню пункт Копировать. Перейдем на лист Записная книжка и вставим скопированное туда командой Вставить с вкладки Главная. Далее – вернемся на лист Price и остановим запись.

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

Если макрос MS Excel понадобится вам не только в одном документе — сохраните его в Личной книге макросов — эта опция доступна в окне записи макроса при выборе места сохранения.

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

Для того, чтобы пользоваться возможностями приложений на полную мощность, не обойтись без полноценного программирования.

1.5. Управление макросами

Вкладка ленты Вид в Microsoft Word и Microsoft Excel содержит кнопку Макросы. Она расположена над раскрывающимся меню, которым мы пользовались до сих пор. Воспользуемся ею. Откройте один из документов MS Word, содержащий макросы, и

нажмите на эту кнопку. Появится окно Макрос (рис. 1.10.), которое предназначено для управления макросами.

Рис. 1.10. Окно управления макросами в MS Word

В данном случае в окне Макрос отображается список макросов из открытого документа. Чтобы посмотреть макросы, находящиеся в других местах (например, в Normal.dotm), воспользуйтесь списком Макросы из.

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

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

Изменить — нажав на эту кнопку, вы откроете редактор Visual Basic, который позволяет изменять макросы и создавать собственные программы.

Создать — наберите в строке Имя желаемое имя нового макроса и нажмите на эту кнопку — система создаст новый пустой макрос и откроет его в редакторе.

Удалить — удаление макроса.

1.6. Выводы

Теперь вы можете создавать простые макросы и автоматизировать с их помощью некоторые операции.

2. Начинаем программировать

Вторая часть посвящена началам программирования на VBA. Здесь будут рассмотрена вкладка Разработчик, дающая доступ к возможностям VBA из приложений MS Office 2007, основы объектно-ориентированного программирования и объектных моделей приложений MS Office. Так же здесь будут рассмотрены вопросы совместного использования Office 2007 и более старых версий Office, не поддерживающих новые форматы файлов без установки дополнительного ПО.

2.1. Редактор Visual Basic 2.1.1. Задание

Записать в Microsoft Word макрос, который автоматически вводит в позицию курсора слово «Привет». Отредактировать макрос вручную таким образом, чтобы он выводил «До свидания».

2.1.2. Решение

Начнем запись макроса (Назовем его «Privet»), введем с клавиатуры слово «Привет», после чего остановим запись.

Откроем окно Макросы нажатием соответствующей кнопки на панели Вид, выберем наш макрос и нажмем на кнопку Изменить. Перед нами откроется окно редактора Visual Basic с открытым в нем макросом (рис. 2.1.)

Рис. 2.1. Окно редактора Visual Basic

Окно редактора включает в себя несколько рабочих областей — окон, служащих для выполнения различных действий. На рис. 2.1. в окне редактора присутствуют три рабочих области:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Using Excel VBA to create Microsoft Word documents

In these examples, we generate Microsoft Word Documents with various formatting features using
the Microsoft Excel VBA scripting language. These techniques can have many useful applications.
For instance if you have a list of data like a price or product list in Excel that you want to present
in a formatted Word Document, these techniques can prove useful.

In these examples, we assume the reader has at least basic knowledge of VBA, so we will not
go over basics of creating and running scripts. This code has been tested on Microsoft Word and Excel
2007. Some changes may be required for other versions of Word and Excel.

Writing to Word
Inserting a Table of Contents
Inserting Tabs
Inserting Tables
Inserting Bullet List
more on Inserting Tables
Multiple Features

Function that demonstrates VBA writing to a Microsoft Word document

The following code illustrates the use of VBA Word.Application object and related properties.
In this example, we create a new Word Document add some text.

    'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running.
	
    'Early Binding
    Dim wdApp As Word.Application
    Set wdApp = New Word.Application
    
    'Alternatively, we can use Late Binding
    'Dim wdApp As Object
    'Set wdApp = CreateObject("word.Application")
        
    With wdApp
        .Visible = True
        .Activate
        .Documents.Add
        
        With .Selection
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
            .Font.Bold = True
            .Font.Name = "arial"
            .Font.Size = 14
            .TypeText ("My Heading")
            .TypeParagraph            
        End With
    End With 

Some VBA Vocabulary

ParagraphFormat
Represents all the formatting for a paragraph.

output in MS Word:

Inserting a Table of Contents into Word Document using Excel VBA

In this example, we generate a Table of Contents into a Word Document using Excel VBA

Sub sAddTableOfContents()
    
    Dim wdApp As Word.Application
    Set wdApp = New Word.Application
	
    'Alternatively, we can use Late Binding
    'Dim wdApp As Object
    'Set wdApp = CreateObject("word.Application")
    
    Dim wdDoc As Word.Document
    Set wdDoc = wdApp.Documents.Add
    
    ' Note we define a Word.range, as the default range wouled be an Excel range!
    Dim myWordRange As Word.range
    Dim Counter As Integer
    
    wdApp.Visible = True
    wdApp.Activate
    
    'Insert Some Headers
    With wdApp
        For Counter = 1 To 5
            .Selection.TypeParagraph
            .Selection.Style = "Heading 1"
            .Selection.TypeText "A Heading Level 1"
            .Selection.TypeParagraph
            .Selection.TypeText "Some details"
        Next
    End With

    ' We want to put table of contents at the top of the page
	Set myWordRange = wdApp.ActiveDocument.range(0, 0)
    
    wdApp.ActiveDocument.TablesOfContents.Add _
     range:=myWordRange, _
     UseFields:=False, _
     UseHeadingStyles:=True, _
     LowerHeadingLevel:=3, _
     UpperHeadingLevel:=1

End Sub

Some VBA Vocabulary

ActiveDocument.TablesOfContents.Add
The TablesOfContents property to return the TablesOfContents collection.
Use the Add method to add a table of contents to a document.

Some TablesOfContents Parameters

Range The range where you want the table of contents to appear. The table of contents replaces the range, if the range isn’t collapsed.

UseHeadingStyles True to use built-in heading styles to create the table of contents. The default value is True.

UpperHeadingLevel The starting heading level for the table of contents. Corresponds to the starting value used with the o switch for a Table of Contents (TOC) field. The default value is 1.

LowerHeadingLevel The ending heading level for the table of contents. Corresponds to the ending value used with the o switch for a Table of Contents (TOC) field. The default value is 9.

output Word Table in MS Word:

Write Microsoft Word Tabs

A function that writes tabbed content to a Microsoft Word Document. Note in each iteration, we change the
value of the leader character (characters that are inserted in the otherwise blank area created by the tab).

Public Sub sWriteMicrosoftTabs()

    'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running.
    
    'Early Binding
    Dim wdApp As Word.Application
    Set wdApp = New Word.Application
    
    'Alternatively, we can use Late Binding
    'Dim wdApp As Object
    'Set wdApp = CreateObject("word.Application")
        
    With wdApp
        .Visible = True
        .Activate
        .Documents.Add
    
        For Counter = 1 To 3
            .Selection.TypeText Text:=Counter & " - Tab 1 "
            
            ' position to 2.5 inches
            .Selection.Paragraphs.TabStops.Add Position:=Application.InchesToPoints(2.5), _
                Leader:=Counter, Alignment:=wdAlignTabLeft
            
            .Selection.TypeText Text:=vbTab & " - Tab 2 "
            
            ' position to 5 inches
            .Selection.Paragraphs.TabStops.Add Position:=Application.InchesToPoints(5), _
                Leader:=Counter, Alignment:=wdAlignTabLeft
            
            .Selection.TypeText Text:=vbTab & " - Tab 3 "
                    
            .Selection.TypeParagraph
        Next Counter
        
    End With
End Sub

Some VBA Vocabulary

.TabStops.Add Use the TabStops property to return the TabStops collection. In the example above,
nprogram adds a tab stop positioned at 0, 2.5 and 5 inches.

output in MS Word:

Write Microsoft Word Tables

In this example, we generate a Microsoft Table using Excel VBA

Sub sWriteMSWordTable ()
 
    'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running.
    
    'Early Binding
    Dim wdApp As Word.Application
    Set wdApp = New Word.Application
    
    'Alternatively, we can use Late Binding
    'Dim wdApp As Object
    'Set wdApp = CreateObject("word.Application")
        
    With wdApp
        .Visible = True
        .Activate
        .Documents.Add
        
        With .Selection
        
            .Tables.Add _
                    Range:=wdApp.Selection.Range, _
                    NumRows:=1, NumColumns:=3, _
                    DefaultTableBehavior:=wdWord9TableBehavior, _
                    AutoFitBehavior:=wdAutoFitContent
            
            For counter = 1 To 12
                .TypeText Text:="Cell " & counter
                If counter <> 12 Then
                    .MoveRight Unit:=wdCell
                End If
            Next
        
        End With
        
    End With

End Sub

Some VBA vocabulary

Table.AddTable object that represents a new, blank table added to a document.

Table.Add properties

Range The range where you want the table to appear. The table replaces the range, if the range isn’t collapsed.

NumRows The number of rows you want to include in the table.

NumColumns The number of columns you want to include in the table.

DefaultTableBehavior Sets a value that specifies whether Microsoft Word automatically resizes cells in tables to fit the cells� contents (AutoFit). Can be either of the following constants: wdWord8TableBehavior (AutoFit disabled) or wdWord9TableBehavior (AutoFit enabled). The default constant is wdWord8TableBehavior.

AutoFitBehavior Sets the AutoFit rules for how Word sizes tables. Can be one of the WdAutoFitBehavior constants.

output in MS Word:

Write Microsoft Word bullet list

In this example, we write with bullet list and outline numbers with Excel VBA

    'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running.
    
    'Early Binding
    Dim wdApp As Word.Application
    Set wdApp = New Word.Application
    
    'Alternatively, we can use Late Binding
    'Dim wdApp As Object
    'Set wdApp = CreateObject("word.Application")
    
    With wdApp
        .Visible = True
        .Activate
        .Documents.Add
        ' turn on bullets
        .ListGalleries(wdBulletGallery).ListTemplates(1).Name = ""
        .Selection.Range.ListFormat.ApplyListTemplate ListTemplate:=.ListGalleries(wdBulletGallery).ListTemplates(1), _
            continuepreviouslist:=False, applyto:=wdListApplyToWholeList, defaultlistbehavior:=wdWord9ListBehavior
        
        With .Selection
            .ParagraphFormat.Alignment = wdAlignParagraphLeft
            .Font.Bold = False
            .Font.Name = "Century Gothic"
            .Font.Size = 12
            .TypeText ("some details")
            .TypeParagraph
            .TypeText ("some details")
            .TypeParagraph
        End With
        
        ' turn off bullets
        .Selection.Range.ListFormat.RemoveNumbers wdBulletGallery
        
        With .Selection
            .ParagraphFormat.Alignment = wdAlignParagraphLeft
            .TypeText ("some details")
            .TypeParagraph
            .TypeText ("some details")
            .TypeParagraph
            
        End With
        
        ' turn on outline numbers
        .ListGalleries(wdOutlineNumberGallery).ListTemplates(1).Name = ""
        .Selection.Range.ListFormat.ApplyListTemplate ListTemplate:=.ListGalleries(wdOutlineNumberGallery).ListTemplates(1), _
            continuepreviouslist:=False, applyto:=wdListApplyToWholeList, defaultlistbehavior:=wdWord9ListBehavior
        
        With .Selection
            .ParagraphFormat.Alignment = wdAlignParagraphLeft
            .TypeText ("some details")
            .TypeParagraph
            .TypeText ("some details")
            
        End With
        
    End With

output in MS Word:

Another example of Writing Tables to Microsoft Word

In this example we will create a word document with 20 paragraphs. Each paragraph will have a header with a header style element

    
   'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running.
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document

    Set wdApp = New Word.Application
    wdApp.Visible = True
    
    
    Dim x As Integer
    Dim y As Integer
    
    wdApp.Visible = True
    wdApp.Activate
    wdApp.Documents.Add
            
    wdApp.ActiveDocument.Tables.Add Range:=wdApp.Selection.Range, NumRows:=2, NumColumns:= _
        2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
                
    With wdApp.Selection.Tables(1)
        If .Style <> "Table Grid" Then
            .Style = "Table Grid"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    End With
            
    With wdApp.Selection
        
        For x = 1 To 2
            ' set style name
            .Style = "Heading 1"
            .TypeText "Subject" & x
            .TypeParagraph
            .Style = "No Spacing"
            For y = 1 To 20
                .TypeText "paragraph text "
            Next y
            .TypeParagraph
        Next x
    
        ' new paragraph
        .TypeParagraph
        
        ' toggle bold on
        .Font.Bold = wdToggle
        .TypeText Text:="show some text in bold"
        .TypeParagraph
        
        'toggle bold off
        .Font.Bold = wdToggle
        .TypeText "show some text in regular front weight"
        .TypeParagraph
        
        
    End With
        
    

Some VBA vocabulary

TypeText

Inserts specified text at the beginning of the current selection. The selection is turned into an insertion point at the end of the inserted text.
If Options.ReplaceSelection = True then the original selection will be replaced. This behaves exactly the same as typing some text at the keyboard.

TypeParagraph

Insert a new blank paragraph. The selection is turned into an insertion point after the inserted paragraph mark. If Options.ReplaceSelection = True then the original selection will be replaced. This behaves exactly the same as pressing the Enter key.

output in MS Word:

Generating a Word table with VBA
	'In Tools > References, add reference to "Microsoft Word XX.X Object Library" before running.

	Dim wdApp As Word.Application
	Dim wdDoc As Word.Document
	Dim r As Integer

	Set wdApp = CreateObject("Word.Application")
	wdApp.Visible = True

	Set wdDoc = wdApp.Documents.Add
	wdApp.Activate

	Dim wdTbl As Word.Table
	Set wdTbl = wdDoc.Tables.Add(Range:=wdDoc.Range, NumRows:=5, NumColumns:=1)

	With wdTbl

		.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
		.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
		.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
		.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
		.Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle
		.Borders(wdBorderVertical).LineStyle = wdLineStyleSingle
		
		For r = 1 To 5
			.Cell(r, 1).Range.Text = ActiveSheet.Cells(r, 1).Value
		Next r
	End With

	

output in MS Word:

Option Explicit
Dim wdApp As Word.Application
 
Sub extractToWord()

   'In Tools > References, add reference to "Microsoft Word 12 Object Library" before running.
   
    Dim lastCell
    Dim rng As Range
    Dim row As Range
    Dim cell As Range
    Dim arrayOfColumns
    arrayOfColumns = Array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
    Dim thisRow As Range
    Dim thisCell As Range
    Dim myStyle As String
    
    ' get last cell in column B
    lastCell = getLastCell()
    
    Set rng = Range("B2:H" & lastCell)
    
    'iterate through rows
    For Each thisRow In rng.Rows
            
        'iterate through cells in row row
        For Each thisCell In thisRow.Cells

            If thisCell.Value = arrayOfColumns(thisCell.Column) Or thisCell.Value = "" Then
            ' do nothing
                ''frWriteLine thisCell.Value, "Normal"
                ''frWriteLine arrayOfColumns(thisCell.Column), "Normal"
                  If thisCell.Value = arrayOfColumns(thisCell.Column) Or thisCell.Value = "" Then
                  End If
                  
            Else
                myStyle = "Normal"
                Select Case thisCell.Column
                    Case 2
                        myStyle = "Heading 1"
                    Case 3
                        myStyle = "Heading 2"
                    Case 4
                        myStyle = "Heading 3"
                    Case Is > 5
                        myStyle = "Normal"
                    
                End Select
                    
                frWriteLine thisCell.Value, myStyle
            End If
        
        arrayOfColumns(thisCell.Column) = thisCell.Value
    
      Next thisCell
    Next thisRow
    
End Sub

Public Function getLastCell() As Integer

    Dim lastRowNumber As Long
    Dim lastRowString As String
    Dim lastRowAddress As String
         
    With ActiveSheet
        getLastCell = .Cells(.Rows.Count, 2).End(xlUp).row
    End With
    
End Function

Public Function frWriteLine(someData As Variant, myStyle As String)
    
    If wdApp Is Nothing Then
        
        Set wdApp = New Word.Application
        With wdApp
            .Visible = True
            .Activate
            .Documents.Add
        End With
            
    End If
    
    With wdApp
        
        With .Selection
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
            .Style = myStyle
            .TypeText (someData)
            .TypeParagraph
        End With
    End With
    
End Function

output in MS Word:

ВикиЧтение

Word 2007.Популярный самоучитель
Краинский И

9.3. Редактор Visual Basic

После записи рассмотренного выше макроса к шаблону Normal добавился следующий текст макроса:

Sub Arial_10_bold()

“ Arial_10_bold Macro

“ Arial 10 Полужирный

With Selection.Font

.Name = «Arial»

.Size = 10

.Bold = True

.Italic = False

.Underline = wdUnderlineNone

.UnderlineColor = wdColorAutomatic

.StrikeThrough = False

.DoubleStrikeThrough = False

.Outline = False

.Emboss = False

.Shadow = False

.Hidden = False

.SmallCaps = False

.AllCaps = False

.Color = wdColorAutomatic

.Engrave = False

.Superscript = False

.Subscript = False

.Spacing = 0

.Scaling = 100

.Position = 0

.Kerning = 0

.Animation = wdAnimationNone

End With

End Sub

Наверняка пользователям, незнакомым с программированием, такой текст покажется очень сложным, однако при ближайшем рассмотрении оказывается, что это простой набор параметров, которые установлены или не установлены. Установленный параметр обозначается словом True, а неустановленный – False.

Для записи макросов, как и для других команд, в Microsoft Word используется язык Visual Basic for Applications (VBA, Visual Basic для приложений). Макрос представляет собой набор команд и операторов на VBA. Каждая команда и действие в Microsoft Word представлены в виде строк формата VBA, процесс записи макроса тоже представляет собой формирование таких строк. Таким образом, пользователь имеет возможность изменить или создать макрос без повторного выполнения всей процедуры. Хотя макрос VBA можно создать в любом текстовом редакторе, не стоит пренебрегать возможностью записи макроса в Word. Макросу, созданному при помощи Microsoft Word, можно добавлять новые команды и функции, а также на таких макросах можно изучать язык VBA.

Макросы можно редактировать, используя специальную утилиту, которая входит в поставку Microsoft Office, – редактор Visual Basic (рис. 9.10).

Рис. 9.10. Окно редактора Visual Basic

Данная программа содержит возможности, которые позволяют работать с макросом: тестировать, отлаживать, запускать на выполнение. Используя этот редактор, можно добавлять, изменять и удалять объекты в макросах, создавать пользовательские диалоговые окна, отлаживать код программных процедур, просматривать и выбирать компоненты текущих проектов и библиотек, определять вид и поведение объектов макроса во время выполнения и выполнять многое другое.

Окно редактора Visual Basic можно открыть несколькими способами, например нажав кнопку Visual Basic на панели Разработчик.

Данный текст является ознакомительным фрагментом.

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

Visual Basic 6.0

Visual Basic 6.0
В Visual Basic 6.0 в отличие от пятой версии окна Code и Object появляются в нормальном, не в раскрытом виде. И приходится при каждом запуске VB6 раскрывать эти окна. Можно заставить автоматически раскрывать эти окна при каждом запуске. Создайте в соответствующем разделе

Visual Basic

Visual Basic
Регистрация dll- и ocx-файловДанная заметка будет полезна разработчикам. Если вам часто приходится работать с ocx-файлами (а также с dll-файлами), которые требуют регистрации в реестре с помощью REGSVR.EXE, то будет гораздо удобнее внести соответствующую запись в реестр, чем

Delphi и Visual Basic

Delphi и Visual Basic
1. Есть ли в Delphi эквивалент массива элементов управления из Visual Basic? Hет. Компоненты Delphi не имеют свойства Index, подобное VB. Однако, имеются три основные причины, почему вы хотите использовать их в VB, и для каждой из них есть решение в Delphi. Причина 1. Вы хотите

3. Переменные Visual Basic

3. Переменные Visual Basic
В Visual Basic переменные накапливают информацию (значения). При их применении Visual Basic занимают область в памяти компьютера, которая предназначена для сохранения этой информации. Имена переменных, составленные из символов, могут иметь длину в 255 символов.

Что визуального в Visual Basic для приложений?

Что визуального в Visual Basic для приложений?
К счастью, VBA во многом избавляет от необходимости нудного печатания программного кода. В одних случаях вы записываете команды, которые нужны в приложении, и используете их в качестве отправной точки при создании новой программы.В

VBA против Visual Basic

VBA против Visual Basic
Помимо того, что VBA не позволяет вам создавать отдельные приложения, одно из основных отличий состоит в том, что программы, написанные на VBA, работают медленнее, чем программы, написанные на Visual

Различия между VBA и Visual Basic

Различия между VBA и Visual Basic
VBA имеет очень много общего с Visual Basic, своим старшим братом, предназначенным для создания независимых приложений. А раз языки похожи, вы можете перенести большую часть своих навыков в программировании на VBA в Visual Basic. Однако вам следует помнить о

Вызов редактора Visual Basic

Вызов редактора Visual Basic
Редактор Visual Basic служит командным центром для работы в VBA. В нем вы должны находиться при разработке VBA-форм, создании VBA-кода, тестировании и отладке VBA программ. Экспертом по использованию редактора Visual Basic вы станете после прочтения главы 5, а пока

Краткое знакомство с редактором Visual Basic

Краткое знакомство с редактором Visual Basic
Первые обращения к редактору Visual Basic могут вас озадачить. Наверное, присутствие меню и панелей инструментов вверху экрана покажется вам привычным, но вот что означает это обилие окон? Предсказать их взаимное расположение

Глава 5. Редактор Visual Basic к вашим услугам.

Глава 5. Редактор Visual Basic к вашим услугам.
В этой главе …~ Поиск команд в системе меню редактора Visual Basic~ Отображение, перемещение и настройка панелей инструментов~ Понимание и использование закрепления панелей инструментов и окон~ Сражение с толпами окон редактора Visual Basic~

Пользовательский интерфейс редактора Visual Basic

Пользовательский интерфейс редактора Visual Basic
Редактор Visual Basic является стандартным блюдом Microsoft- меню, панели инструментов и комбинации клавиш выглядят и работают очень похоже на Microsoft Office. Вы будете чувствовать себя как дома, если используете VBA с приложениями из Office.С

Подход Visual Basic 6.0

Подход Visual Basic 6.0
Благодаря искреннему желанию насладиться более простой жизнью, многие программисты ушли от «мира каркасов» приложений на базе C(++) к более дружественным языкам, таким, как, например, Visual Basic 6.0 (VB6). Язык VB6 стал популярным благодаря тому, что он дает

Среда разработки eMbedded Visual Basic 3.0

Среда разработки eMbedded Visual Basic 3.0
Для краткости в этой главе для обозначения среды eMbedded Visual Basic 3.0 будет использовано сокращение eVB.Запустить eVB можно либо при помощи команды меню Пуск (Пуск ? Программы ? Microsoft eMbedded Visual Tools ? eMbedded Visual Basic 3.0), либо найти в папке установки

Отличия eVB и Visual Basic для. NET

Отличия eVB и Visual Basic для. NET
В основном отличия VB.NET от eVB связаны с интеграцией языка VB с Compact Framework и определяются именно внутренней структурой самой CF.Типы данныхВ eVB был один-единственный тип данных на все случаи жизни, Variant, который достался eVB по наследству от VB Script. Visual

2.4.2. Генерация кода в Visual Basic

2.4.2. Генерация кода в Visual Basic
ERwin поддерживает генерацию кода для MS Visual Basic версий 4.0 и 5.0. В качестве источника информации при генерации форм служит модель ERwin. Использование ERwin позволяет одновременно описывать как клиентскую часть (объекты, отображающие данные на экране),

Понравилась статья? Поделить с друзьями:
  • Vba with microsoft word
  • Vba with excel book
  • Vba with excel 2003
  • Vba visio from excel
  • Vba userform for word