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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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  
     
     
    Родственные топики:
  • Вопросы по работе с Microsoft Word - часть 1, часть 2
  • Технические проблемы с Microsoft® Office® 2016 | Microsoft® Office® 2013 | Microsoft® Office® 2010 | Microsoft® Office® 2007 | Microsoft® Office® 2003
     
     
  • Excel VBA все вопросы по Excel VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы/готовые решения:
  • функция возвращает список закладок в документ
     
    Перечень основных ColorIndex'ов из MSDN
     
    - стартовый вопрос топика...

  • Всего записей: 2950 | Зарегистр. 27-09-2001 | Отправлено: 03:05 01-06-2005 | Исправлено: ALeXkRU, 11:40 02-07-2018
    aar



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу помощи: http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=5752#1

    ----------
    * * *
    Раритетное и эксклюзивное руководство «Как правильно задавать вопросы». Версия 3.6.
    Для недовольных.

    Всего записей: 7080 | Зарегистр. 20-11-2003 | Отправлено: 08:14 22-09-2005
    ATAS80



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли в Word'е при помощи VBA сделать на панели инструментов ComboBox или ListBox

    Всего записей: 66 | Зарегистр. 21-07-2005 | Отправлено: 13:17 26-10-2005
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ATAS80
    Несколько непонятно. Что значит сделать ComboBox или ListBox и зачем?

    Всего записей: 3907 | Зарегистр. 31-03-2002 | Отправлено: 20:25 26-10-2005
    ATAS80



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
    Ну например такую же компоненту например как выбор шрифта в Word'e или изменения размера шрифта

    Всего записей: 66 | Зарегистр. 21-07-2005 | Отправлено: 23:18 26-10-2005
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ATAS80
    Не понятно, зачем на панели инструментов. Тем более, что эти контролы на ней уже есть.
    PS. Для показа панели сделай правый клик на тоолбаре и выбери 'control toolbox'
     
    Добавлено:
    А может ты хочешь сделать новый тоолбар? Тогда смотри CommandBars в хелпе.
    CommandBars("Standard").Controls.Add Type:=msoControlButton, _
        ID:=2522, Before:=4

    Всего записей: 3907 | Зарегистр. 31-03-2002 | Отправлено: 01:06 27-10-2005 | Исправлено: dneprcomp, 01:12 27-10-2005
    orre

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вопросик тут у меня маленький,может кто поможет ?
    есть шаблон в Ворде 2000, .dot файл, в нём куча форм, кода и т.п. , после выполения которых, создается новый .doc -> в него копируется текст из листа в шаблоне и затем хотелось бы закрыть сам шаблон ( без сохранения изменений ),т.е. весь .dot файл, а вот "свежесозданный" .doc должен остаться открытым. Как закрыть документ, или вообще весь ворд -- это понятно, а вот как закрыть template -- не найду я у него ?

    Всего записей: 2 | Зарегистр. 05-09-2005 | Отправлено: 19:44 20-11-2005
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    orre
    Если открывал template как документ, то и закрывай так же

    Код:
    ActiveDocument.Close SaveChanges:=wdPromptToSaveChanges/wdDoNotSaveChanges/wdSaveChanges, _
      OriginalFormat:=wdPromptUser
    или как Window
    Код:
     ActiveDocument.ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges


    Всего записей: 3907 | Зарегистр. 31-03-2002 | Отправлено: 07:32 21-11-2005 | Исправлено: dneprcomp, 07:33 21-11-2005
    orre

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
    Цитата:
    ActiveDocument.Close SaveChanges....

     
    ага, вот тут у меня и возникает проблема. после копирования текста в новый .doc,он у меня получается активным, и у меня не как не выходит сделать активным окно приложения с шаблоном. Когда пишу
    Documents("Test.dot").Activate  , то получаю ошибку.

    Всего записей: 2 | Зарегистр. 05-09-2005 | Отправлено: 09:58 21-11-2005
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    orre
    Попроуй через Windows объект
    ActiveDocument.ActiveWindow.Next.Activate
    Windows(1).Activate

    Цитата:
    Using the Window Object
    Use Windows(index), where index is the window name or the index number, to return a single Window object. The following example maximizes the Document1 window.
     
    Windows("Document1").WindowState = wdWindowStateMaximize
    The index number is the number to the left of the window name on the Window menu. The following example displays the caption of the first window in the Windows collection.

    Кроме того, возможна ситуация, когда template во время активации исполняет какой-нибудь event и возвращает фокус назад на документ.  
     

    Всего записей: 3907 | Зарегистр. 31-03-2002 | Отправлено: 20:12 21-11-2005 | Исправлено: dneprcomp, 20:18 21-11-2005
    DroN_S

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    может вопрос не по теме, но где в офисе 2003 находится VB?

    Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 00:44 23-11-2005
    Sleepwalker



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что-то я в растерянности. Может кто подскажет решение?
    Задача: создать на листе компонент типа label. Создается таким вот кодом:
        s = Selection.Text
        Dim lb1 As InlineShape
        Set lb1 = ActiveDocument.InlineShapes.AddOLEControl(ClassType:="Forms.Label.1")
        lb1.OLEFormat.Object.Caption = s
     
    допустим, сохраняем начальную точку:
        sp = Selection.Start
     
    Как переместить Лэйбл в позицию sp?
    Суть в чем: мне нужно выделенный кусок текста заменить лэйблом.
    ----
     
    вопрос решен. извините
    достаточно было вместо ActiveDocument использовать Selection

    Всего записей: 1954 | Зарегистр. 19-10-2002 | Отправлено: 11:02 24-11-2005 | Исправлено: Sleepwalker, 13:16 24-11-2005
    Inochkin

    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DroN_S
    Alt+F11

    Всего записей: 124 | Зарегистр. 05-08-2005 | Отправлено: 11:12 24-11-2005
    DroN_S

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

    Цитата:
    Alt+F11

    нет, не его вызов, а сами файлы

    Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 12:19 24-11-2005
    Prisoner of Ice

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1.Подскажите как написанные для VBA макросы перегнать в VB, т.е. создать отдельное от оффиса приложение, но чтобы оно работало с листами Excel как если бы это был макрос.
    2.Как сделать работу макроса "неявной", т.е. чтобы при сравнении строк, он не показывал как он по ним пробегает, а работал с инфой в памяти. Обязательно ли для этого закачивать ее(информацию) вручную в массив? Я не очень хорошо знаю БД, буду очень благодарен за помощь.

    Всего записей: 334 | Зарегистр. 24-11-2005 | Отправлено: 16:08 24-11-2005 | Исправлено: Prisoner of Ice, 16:10 24-11-2005
    phpcoder

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста. Такой вопрос.
    Макросом из Access необходимо открыть документ word и сделать слияние в новый документ.
    Пробовал так:

    Цитата:
     
     
        Dim objWord As Object
        Set objWord = CreateObject("Word.Application")
        objWord.Visible = True
        objWord.Documents.Open ("D:\doc1.dot")
         
        With ActiveDocument.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            .Execute Pause:=False
        End With
        ActiveWindow.ActivePane.VerticalPercentScrolled = 0
     
        objWord.ActiveDocument.Close
        objWord.Quit
        Set objWord = Nothing
     

    Ругается на ActiveDocument.MailMerge - объект не поддерживает св-во или метод.
    Что неверно?
     
    Добавлено:
    Вопрос снят, разобрался.

    Цитата:
     
     
        Dim WordApp As Word.Application
        Dim DocWord As Word.Document
         
        Set WordApp = New Word.Application
        WordApp.Visible = True
        Set DocWord = WordApp.Documents.Open("c:\doc1.doc")
        DocWord.Activate
         
        With ActiveDocument.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            .Execute Pause:=False
        End With
        ActiveWindow.ActivePane.VerticalPercentScrolled = 0
     

    Всего записей: 194 | Зарегистр. 23-05-2004 | Отправлено: 09:52 25-11-2005
    Anatolij2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Дайте пожалуйста ссылку в инете на хорошую книгу по Word VBA(для бесплатной закачки).
    Заранее благодарен
     
    Добавлено:
    Помогите решить следующую проблему:
    Есть большой документ со вставленными текстовыми полями формы(около 700 полей).
    Есть также таблица в которой в одном столбце значения текста по умолчанию для полей
    (старое значение) и в другом значения новые. Нужно написать макрос в VBA чтобы в документе заменить все старие значения на новые.
    Заранее благодарен

    Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 13:20 21-02-2006
    Troitsky



    Водник Водкин
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Anatolij2005
    Книги по ВБА тут. Там правда по Excel больше, но все же...
     
    В целом можешь тут  поискать.
     

    Цитата:
    Помогите решить следующую проблему

    Выложил бы примеры файлов (кратко).
    Кстати, не проще было на стадии создания полей и текст заменять?
     
    Да, вот еще, в итоге нужно получить тот же текст по умолчению (только новый) для каждого поля?

    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 22:34 21-02-2006
    Anatolij2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    За ссылки спасибо правда они работают не все и по Word VBA почти ничего не нашел.Вот
    кусок текста с полями
     
    1.1.  Natrii chloridi    
    Натрия хлорид , раствор 0,95% для инфузий по 200 мл и 400 мл в бутылках стеклянных для крови, трансфузионных и инфузионных препаратов.
        1.2.Натрия хлорид, раствор 0,95% для инфузий, препарат производства ООО «Юни-ко», является лекарственным средством и соответствует требованиям АНД кР.С.№ П.05.03/456987 ,приказ МОЗ № 2356 от 29.05.05
     
        1.3. Регистрационное удостоверение Р.С.№ П.05.03/456987
    полями являются
    Natrii chloridi
    Натрия хлорид , раствор 0,95% для инфузий по 200 мл и 400 мл
    Натрия хлорид, раствор 0,95% для инфузий
    кР.С.№ П.05.03/456987
    № 2356 от 29.05.05
     
    старое и новое значения находятся в обычной таблице в одном столбце старое значение в другом новое
    Дело в том что текст который нужно заменить необходимо менять не однократно и он не всегда известен, абсолютно верно:
    в итоге нужно получить тот же текст по умолчению (только новый) для каждого поля.

    Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 11:03 22-02-2006
    Troitsky



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

    Цитата:
    Вот кусок текста с полями

    Я же тебя другое просил
    Цитата:
    Выложил бы примеры файлов

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

    ----------
    Мы в хорошем настроении гуляем по лесам.
    Кто обидеть нас захочет – сам получит по усам.
    Сам полу- получит по усам. Сам полу- получит по усам!

    Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 14:53 22-02-2006
    Anatolij2005

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я бы с радостью выложил все файлы но подписивался за конфедициальность информации так что извини.Значение свойства текст по умолчанию каждого поля не уникально(есть одинаковые). Но каждое поле как ты понял закладка Текстовое Поле1 Текстовое Поле2 и т.п.Одинаковых закладок нет.Таблица со старыми и новыми значениями сделана в Word.
    Среди старых и новых значений одинаковые попадаются.Поля в документе следуют в том же порядке, что и строки таблицы со значениями их текста по умолчанию(если это будет не так то буду вручную все переделывать).Требуемые действия нужно произвести возможно раз 20-30.Если есть вариант как это реализовать вручную. Напиши возражать не буду.
    Заранее благодарен

    Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 17:21 22-02-2006
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru