Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 33 34 35 36 37 38 39

Открыть новую тему     Написать ответ в эту тему

exMIB



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
 
Обсуждаем вопросы только по Word VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Word, не относящиеся к программированию, задаем в теме Microsoft Word

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Рекомендации:
Если у Вас есть проблема, не решаемая стандартными средствами Word (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Word (на вкладке Разработчик - Запись Макросов). Подробнее здесь. В большинстве случаев получившийся код (Разработчик-Макросы-Макрос-Изменить или Разработчик-Visual Basic) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроенная помощь (F1), естественно.
 
Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылезает ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

 
Рекомендуется к прочтению:
  • Начало работы с VBA в Word 2010
  • Microsoft Visual Basic for Application. Осетрова И.С., Осипов Н. А. Учебное пособие (руководство по программированию на VBA в MS Office)  
  • Введение в VBA для приложений MS OFFICE
  • Word и его объекты. Лекция из курса «Основы офисного программирования и документы Word»
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Справка по VBA
  • Microsoft Word Visual Basic Reference - руководство по VBA (eng.)
  • Справочник по Word VBA
  • Блог Александра Гуревича  - тематический блог: советы по работе с Word и Excel и прочие материалы
  • Форум по VBA, Excel и Word Макросы в Word -тематический форум, готовые решения
  • Список полезной литературы по Word и программированию на VBA
  • Подборка решений на VBA для Word  
     
     
  • Excel VBA все вопросы по Excel VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы/готовые решения:
  • функция возвращает список закладок в документ
     
    Перечень основных ColorIndex'ов из MSDN
     
    - стартовый вопрос топика...

    Смежные темы:
    Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
    Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
    Программы » Word FAQ | Excel FAQ | Access FAQ
    Прикладное программирование » Excel VBA | Access VBA  
    Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
    Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
    Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
    Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

  • Всего записей: 3298 | Зарегистр. 27-09-2001 | Отправлено: 03:05 01-06-2005 | Исправлено: ALeXkRU, 17:10 03-08-2021
    Griven

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, подскажите как в буфер обмена скопировать значение переменной?

    Всего записей: 44 | Зарегистр. 05-06-2007 | Отправлено: 16:12 29-05-2008
    Griven

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Народ, подскажите как в буфер обмена скопировать значение переменной?

    Выход найден. Спасибо Vitus_Bering!
    Для интересующихся: смотрим здесь.

    Всего записей: 44 | Зарегистр. 05-06-2007 | Отправлено: 11:05 30-05-2008
    MiniMen

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пытаюсь заменить текст, который выделен закладкой "qq", получается, текст заменяется, но! закладка пропадает. Можно ли сделать так чтобы не пропадала?

    Код:
     
    Public Sub IfThenSub()
    Dim var As String
    var = InputBox("Введите ваше слово")
    ThisDocument.Bookmarks.Item("qq").Range.Text = var
    End Sub
     

    з.ы Т.е такой код можно выполнить только один раз! Второй - получаю ошибку: Run Time Error '5941' Запрашиваемый номер семейства не существует

    Всего записей: 63 | Зарегистр. 12-12-2005 | Отправлено: 22:11 14-06-2008 | Исправлено: MiniMen, 22:17 14-06-2008
    SergBSI

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не подскажите как перекрестные ссылки преобразовать в обычные значения вкл концевые

    Всего записей: 516 | Зарегистр. 09-12-2003 | Отправлено: 09:46 18-06-2008
    Zhyryk

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем здравствовать =)
     
    Прошу помочь в решении поставленной задачи:
     
    Имеем документ  MS Word 2003 с  текстовым полем(ями) (создано ч/з панель "Формы" + формат текста  "Прописные буквы") которое не должно содержать кирилицы и "\" - обратного слеша. Возможно в дальнейшем список ограничений дополнится.  
    Или иная постановка задачи: поле может содержать только латинские символы, цифры, "точку", "запятую", "тире", "слеш".
     
    В случае обнаружения недопустимого символа в поле вставлять сообщение об ошибке и возвращять на него фокус.
     
    Насколько я понял на время выполнения макроса форму необходимо разлочить, макрос привязывать к действию "выход из формы".
     

    Всего записей: 3 | Зарегистр. 13-06-2008 | Отправлено: 17:39 23-06-2008 | Исправлено: Zhyryk, 11:46 25-06-2008
    Mew



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!  
    Научите пожалуйста каким образом в Microsoft Outlook можно автоматизировать процесс сохранения сообщений на диске в формате сообщений Outlook (*.msg)? То есть вместо того чтобы лезть в меню, потом выбрать там "Сохранить как", поменять формат сообщения, изменить путь, нажать "Сохранить" мы просто на сообщении жмем какую-нибудь комбинацию клавиш и всё готово... Может кто макрос может написать? К сожалению я Visual Basic не знаю... Благодарю!

    Всего записей: 148 | Зарегистр. 09-07-2004 | Отправлено: 10:51 25-06-2008 | Исправлено: Mew, 10:53 25-06-2008
    SergBSI

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    есть ли возможность отключить выполнение autoexec в книге не запрещая выполнение других макросов

    Всего записей: 516 | Зарегистр. 09-12-2003 | Отправлено: 19:57 25-06-2008
    nopoxz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Задумал сдедующее: из ексела открываю файл ворда, который распичатывается и сразу закрывается.
     
    В екселе я сделаю кнопку которая откроет ворд.
     
    Далее в ворде пропишу:
     

    Код:
    Sub AutoExec ()
     
    ActiveDocument.PrintOut
    ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
     
    End Sub

     
    Есть 2 проблемы:
     
    1) Не закрывается окно ворда (окно документа закрывается). Нашел команду  
    wd.Quit, но не понимаю как она работает
     
    2) Этот макрос работает при открытии любого документа ворда. Как сделать, чтобы он работал только при открытии определённых документов?

    Всего записей: 38 | Зарегистр. 02-07-2008 | Отправлено: 14:25 08-07-2008
    Nika7

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят,помогите...только начала работать с VBA.Ничего не понятно...
    Задача следующая:
    1.Есть готовая таблица в Excel с определенным количеством строк(на 20 человек).Нужно заносить в нее разные данные.Может занесем всего 5,10,15 и т.д. человек.Необходимо автоматическое удаление оставшихся пустых строк.
    2.В соответствие с тем,сколько человек занесено в список,формируется такое же количество листов.Нужно чтобы оно формировалось не для 20 чел,как было изначально,а для стольки,сколько будет занесено.
    Спасибо....
     
    Добавлено:
    Хотелось бы создать специальную кнопочку на первом(главном)листе-удаление пустых строк.Чтобы после занесения новых данных из EXCEL заявки в EXCEL таблицу,гажать на нее и удалить все пустые ненужные строки.И автоматически сформировалось бы нужное количество остальных листов...
    но как написать такое макрос?Как он будет считать какие именно пустые ....может,по первым трем столбцам(Ф.И.О.)проверяет их.если пучтсые,то удаляет всю строку...

    Всего записей: 5 | Зарегистр. 08-07-2008 | Отправлено: 15:51 08-07-2008
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nika7, Вы чуть-чуть ошиблись темой... Вам надо сюда - Excel VBA
     
    P.S. ответил Вам там...
     
     

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 20:37 08-07-2008
    urodec



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди, подскажите, как правильно по шаблону выгружать неизвестное количество данных? Т.е. я могу задать вид, скажем, одного объекта данных. В результате мне нужно получить выгруженный набор.

    Всего записей: 711 | Зарегистр. 17-01-2003 | Отправлено: 18:17 10-07-2008
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    urodec - может Вым поможет слияние документов?
    (В меню Сервис выберите команду Письма и рассылки, а затем — команду Мастер слияния...  и поищите по F1 - Создание и печать документов на бланке)

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 13:10 11-07-2008
    polk90



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nopoxz
    В екселе при открытии документа, в контекстном меню, есть пункт "Печать". Само прогу запустит, на печать отправит, и закроет все. На самом деле это и из проводника можно сделать но так можно синтаксис посмотреть.

    Всего записей: 4656 | Зарегистр. 19-12-2002 | Отправлено: 01:43 13-07-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MiniMen
    Попробуй вот такой код:

    Код:
    Sub IfThenSub()
    Dim var As String
    Dim bm As Bookmark
    var = InputBox("Введите ваше слово")
    With ActiveDocument
       If .Bookmarks.Exists("qq") Then
          .Bookmarks("qq").Range.Select
          Selection.Text = var
          Selection.Bookmarks.Add Name:="qq"
          Selection.Collapse wdCollapseStart
       Else
          MsgBox "Такой закладки в тексте нет"
       End If
    End With
    End Sub

    И закладка останется, и текст будет новый.

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 18:13 16-07-2008
    Kai

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В документе Word есть таблица с пятью столбцами и N строк.
     
    Суть задачи вкратце такова:
     
    1. Вставить после таблицы текст (заранее определенный).
    2. Вставить разрыв страницы.
    3. Вставить на второй странице шаблон таблицы (имеющийся).
    4. Вставить в него первые 3 столбца из первой таблицы.
    5. Вставить 2 перевода строки.
    6. Вставить шаблон третьей таблицы.
    7. Вставить в 5 и 7 столбец этого шаблона 2 последних столбца первой таблицы.
     
    Кто-нибудь может написать подобный макрос для Word?

    Всего записей: 366 | Зарегистр. 23-10-2003 | Отправлено: 13:24 27-07-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Вставить на второй странице шаблон таблицы (имеющийся).


    Цитата:
    Вставить шаблон третьей таблицы.  

    Что за шаблоны? Дайте ссылки на эти шаблоны.

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 11:52 30-07-2008
    Kai

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    baston
     
    _http://role.jino-net.ru/doc.rar
     
    В архиве два документа: исходный и уже обработанный, так, как это должен сделать макрос.
    Вторая и третья таблицы являются шаблонами (за исключением тех данных, что подставляются из первой).
    Число строк в первой таблице (следовательно, во 2 и 3) может быть любым.

    Всего записей: 366 | Зарегистр. 23-10-2003 | Отправлено: 14:59 30-07-2008 | Исправлено: Kai, 15:15 30-07-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kai, вопрос: исходный документ это документ, который вы создаете всегда? Он как-бы основа для работы? Спрашиваю, так как думаю оформить более логично его и в виде шаблона (расширение dot), на основе которого потом можно создавать другие документы.

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 17:16 30-07-2008
    Kai

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    baston

    Цитата:
    вопрос: исходный документ это документ, который вы создаете всегда? Он как-бы основа для работы? Спрашиваю, так как думаю оформить более логично его и в виде шаблона (расширение dot), на основе которого потом можно создавать другие документы.

    Не совсем так.
     
    Изначально это текстовый файл, который выдает другая программа (в DOS-кодировке, с тире и вертикальной палочкой в качестве границ таблицы). Я просто меняю расширение с .txt на .doc, чтобы открыть файл в Word'е для дальнейшей обработки, а Word сам распознает таблицу. Шапка таблицы всегда одинаковая, но данные каждый раз разные.
    Если бы макрос смог обрабатывать сразу этот файл, было бы, конечно, здорово

    Всего записей: 366 | Зарегистр. 23-10-2003 | Отправлено: 18:11 30-07-2008 | Исправлено: Kai, 18:55 30-07-2008
    baston



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kai
    Увы, не могу осилить выборку данных из первой таблицы и вставку в другие таблицы: мало знаний и опыта. Слишком сложна структура таблиц, в которой есть еще и объединенные ячейки. Бился...
    Могу лишь скинуть код для вставки двух таблиц без данных из первой таблицы внутри них. Может кто-то более грамотный здесь есть?
    Рекомендую вам еще задать ваш вопрос на сайт rusfaq.ru в раздел по программированию на VBA (Ссылка).
    Код для вставки таблиц:

    Код:
    Sub table_1()
    Dim oRange As Range
    Dim oTableFrom As Table
    Dim oTableTo As Table
    Dim oRow As Row
    Dim oCell As Cell
    Dim sStr As String   'заранее определенный текст
    Dim s As String   'текст ячеек первой таблицы
    Dim i, j, i1, j1 As Long  'переменные для количества строк в таблицах
    Dim tb1() As String
    Dim tb2() As String
    Set oTableFrom = ActiveDocument.Tables(1)
    Set oRange = Selection.Range
    sStr = "Какой-то текст, заранее определенный."
    ReDim tb1(1 To 20)
    ReDim tb2(1 To 10)
    tb1(1) = "Описание земельных участков. Раздел " & Chr(171) & "Описание границ" & Chr(187)
    tb1(2) = "Кадастровый квартал № ____________________ Изменение №______________________"
    tb1(3) = "СВЕДЕНИЯ О ВНОВЬ ОБРАЗОВАННЫХ И ПРЕКРАЩАЮЩИХ СУЩЕСТВОВАНИЕ УЗЛОВЫХ И ПОВОРОТНЫХ ТОЧКАХ ГРАНИЦ"
    tb1(4) = "Условное обозначение точки"
    tb1(5) = "Координаты"
    tb1(6) = "f, м"
    tb1(7) = "Описание закрепления точки"
    tb1(8) = "Кадастровая запись"
    tb1(9) = "Х"
    tb1(10) = "У"
    tb2(1) = "СВЕДЕНИЯ О ВНОВЬ ОБРАЗОВАННЫХ И ПРЕКРАЩАЮЩИХ СВОЕ СУЩЕСТВОВАНИЕ УЧАСТКАХ ГРАНИЦ"
    tb2(2) = "От"
    tb2(3) = "т."
    tb2(4) = "до"
    tb2(5) = "Длина, м"
    tb2(6) = "S, м"
    tb2(7) = "Дирекционный угол"
    tb2(8) = "Описание прохождения границы"
    tb2(9) = "Кадастровая запись"
    'вставляем текст после таблицы
    oRange.EndOf wdStory, wdMove
    oRange.InsertAfter vbCr & sStr
    oRange.Collapse wdCollapseEnd
    oRange.InsertBreak
    oRange.Collapse wdCollapseEnd
    oRange.Select
    Set oTableTo = ActiveDocument.Tables.Add(Selection.Range, 6, 6)
    With oTableTo
       .Cell(Row:=1, Column:=1).Merge .Cell(1, 6)
       .Cell(Row:=2, Column:=1).Merge .Cell(2, 6)
       .Cell(Row:=3, Column:=1).Merge .Cell(3, 6)
       .Cell(1, 1).Range = tb1(1)
       .Cell(2, 1).Range = tb1(2)
       .Cell(3, 1).Range = tb1(3)
       .Cell(4, 1).Range = tb1(4)
       .Cell(Row:=4, Column:=2).Merge .Cell(4, 3)
       .Cell(4, 2).Split 2, 1
       .Cell(4, 2).Range = tb1(5)
       .Cell(5, 2).Split 1, 2
       .Cell(5, 2).Range = tb1(9)
       .Cell(5, 3).Range = tb1(10)
       .Cell(4, 3).Range = tb1(6)
       .Cell(4, 4).Range = tb1(7)
       .Cell(4, 5).Range = tb1(8)
       .Borders.Enable = True
    End With
    Set oTableTo = Nothing
    Erase tb1
    oRange.EndOf wdStory, wdMove
    oRange.InsertAfter vbCr & vbCr
    oRange.Select
    Selection.Collapse wdCollapseEnd
    Set oTableTo = ActiveDocument.Tables.Add(Selection.Range, 6, 9)
    With oTableTo
       .Cell(Row:=1, Column:=1).Merge .Cell(1, 9)
       .Cell(1, 1).Range = tb2(1)
       .Cell(2, 1).Range = tb2(2)
       .Cell(2, 2).Range = tb2(3)
       .Cell(2, 3).Range = tb2(4)
       .Cell(2, 4).Range = tb2(3)
       .Cell(2, 5).Range = tb2(5)
       .Cell(2, 6).Range = tb2(6)
       .Cell(2, 7).Range = tb2(7)
       .Cell(2, 8).Range = tb2(8)
       .Cell(2, 9).Range = tb2(9)
       .Borders.Enable = True
    End With
    Set oTableTo = Nothing
    Erase tb2
    End Sub

    Всего записей: 39 | Зарегистр. 27-12-2005 | Отправлено: 16:16 31-07-2008
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 33 34 35 36 37 38 39

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru