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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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



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

    Цитата:
    коды "больших" лежат в другом диапазоне, впрочем как оно в Wordе я без понятия.

    Не в том дело. Если действительно случайно, то надо чтоб и в начале предложения случайно выпадала либо большая либо малая. А так там гарантированно остается большая буква.
    Впрочем все это от исходного текста зависит. Какой он, и что нужно получить в результате. Я сне представляю для чего это все нужно.

    ----------
    Фашисты будущего будут называть себя антифашистами - Черчилль
    Кому я должен, я всем прощаю...

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 18:07 14-11-2012
    crotoff

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gena1971
    всё верно, в начале и в любом месте - либо большая либо малая. То же самое если встретится имя собственное или аббревиатура. В Excel VBA регистр можно через коды символов поменять (прибавить или отнять 32), а как в Word'е - без понятия. Cюда обратился потому что текст. А нужно это для того, чтобы текст можно было прочитать, но не так быстро, как обычно (пробежав глазами)

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 19:09 14-11-2012
    AndVGri

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

    Код:
     
    Public Sub Test()
        Dim i As Long, sChar As String
        Dim pChars As Characters
        Set pChars = ThisDocument.Range.Characters
        Math.Randomize
        For i = 1 To pChars.Count
            sChar = LCase$(pChars(i).Text)
            If (Asc(sChar) > 223) And (Asc(sChar) < 256) Then
                If Math.Rnd >= 0.5 Then
                    pChars(i).Text = sChar
                Else
                    pChars(i).Text = UCase$(pChars(i).Text)
                End If
            End If
        Next i
        Stop
    End Sub
     

    Только работать будет долго - 10 страничный документ за 17000 символов прервал на 3000 через 2 минуты.

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 07:00 15-11-2012
    crotoff

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    благодарю, только что проверил - работает, но в 2003. В 2010 не хочет, подсвечивает жёлтым Stop, а если Stop удалить - идёт сразу на End Sub
    А, в 2003м тоже останавливается на Stop и подсвечивает жёлтым, но регистры меняет
    Разобрался, это в 2010 настройки безопасности жёсткие стояли, удалил stop - и теперь всё работает.

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 11:42 15-11-2012 | Исправлено: crotoff, 13:33 15-11-2012
    me4me

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    crotoff
    Цитата:
    коды "больших" лежат в другом диапазоне, впрочем как оно в Wordе я без понятия.  

    Цитата:
    В Excel VBA регистр можно через коды символов поменять (прибавить или отнять 32), а как в Word'е - без понятия.  

    VBA он и в Африке VBA.  
    F2

    Всего записей: 49 | Зарегистр. 15-11-2012 | Отправлено: 14:56 15-11-2012
    InSe0F



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

    Цитата:
    Есть такая задачка.  
    Есть word в котором допустим есть только заголовки (уровни 1,2 и 3), текст, списки булетами и с нумерацией, и картинки.  
     
    Этот ворд надо перегнать в файл с простейшей html версткой (h1,h2,h3,i,b,li,img) и сохраненными картинками в png.  
     
    Можно ли как-нибудь решить такую задачку или возможно ее уже кто-то до меня решил?

    Никто не знает ?

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 00:47 02-12-2012
    evl2012

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день, утро, вечер!
    Очень нужна помощь.
    Задача -- изменить форматирование во всех формулах (MS Equation 3.0) документа (документов много, формул тоже)
    Поясню, кто не в курсе, необходимо открыть редактор формул, настроить форматирование в меню Стиль и Размер (это можно сделать один раз) и последовательно входить-выходить в каждую формулу
    Часть задачи удалось реализовать, а именно найти формулу и открыть ее. Кроме того VBA позволяет переходить к следующей формуле, но выйти из последней формулы я не могу.  
    Кто сталкивался с задачей управления объектами Worda откликнитесь, пожалуйста.
     
    Попутный вопрос: в какой ветке реестра или вообще где MS Equation 3.0 хранит настройки по умолчанию, а именно Шрифта, Стиля, Размера, Интервалов
     
    Благодарен за любую информацию (примеры, ссылки, учебники и т.д.)

    Всего записей: 1 | Зарегистр. 02-12-2012 | Отправлено: 23:16 02-12-2012
    Leojse

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

    Всего записей: 107 | Зарегистр. 05-11-2009 | Отправлено: 21:22 12-12-2012
    fobosvgrunt

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня есть база ACCESS - каталог книг (автор, название...) Как внести в главный список литературы Word записи из этой базы? Что-то типа экспорта из базы в формате XML из базы в папку "библиография"? - но там какой то код Word генерирует при внесении нового источника... Что-то я совсем не соображу как поступить. НЕЛП, ПЛИЗ, профану!!!

    Всего записей: 36 | Зарегистр. 14-01-2012 | Отправлено: 19:42 17-12-2012
    PoziaSergey

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго вечера. Помогите пожалуйста подправить скрипт. Записал его через Запись макроса:
     
    Sub Zakladka()
        ActiveWindow.View.ShowBookmarks = False
    End Sub
     
    Выключает или включает при замене False на True отображение закладок. Сделал две кнопки на отключение и включение закладок. А как сделать один макрос который бы при первом нажатии включал, а при следующем выключал закладки? Спасибо

    Всего записей: 218 | Зарегистр. 16-05-2009 | Отправлено: 19:53 22-12-2012
    Gena1971



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

    Код:
    Sub Zakladka()
      With ActiveWindow.View
       If .ShowBookmarks = False Then .ShowBookmarks = True Else .ShowBookmarks = False
      End With
    End Sub

    Всего записей: 2567 | Зарегистр. 25-01-2005 | Отправлено: 22:12 22-12-2012
    mic69

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Прошу помощи!  
     
    Word 2007. В шабоне вставлен элемент управления "Выбор даты" (выпадающий календарь).  
     
    Как сделать, чтобы при создании документа (на основе этого шаблона) указанное поле принимало значение "сегодня" + 1 день, т.е. - "завтра"?  
     
    То, что в шаблон нужно вставить макрос типа AutoOpen (или AutoCreate), присваивающий данному элементу определенное значение - я понимаю, но в VBA, к сожалению, не силён ... поэтому, надеюсь на помощь знатоков.  
     
    Заранее благодарю!  
     
    P.S. Элемент управления - именно "календарь", т.к. иногда нужно выбирать дату позже чем "завтра".

    Всего записей: 2 | Зарегистр. 02-05-2009 | Отправлено: 11:50 24-12-2012
    Dogmatek

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи подскажите пожалуйста, как в Ms Office 2010 создать надстройку для Word?
     
    Написал необходимые макросы для Ворда, но когда коснулся вопроса сохранения файла как Надстройки не смог найти информации по данному вопросу.
    Знаю, что в Excel есть возможность сохранить документ в качестве надстройки (несколько уже создавал), однако в Word не получается найти способа.

    Всего записей: 44 | Зарегистр. 25-01-2005 | Отправлено: 05:12 22-02-2013
    Vadim39



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

    Код:
    Sub pr1()
    Dim sl As String, i As Long
    With ActiveDocument.Range.Characters
        For i = 1 To .Count
            If InStr(sl, .Item(i)) = 0 Then sl = sl + .Item(i)
        Next
    End With
     
    Debug.Print sl
     
    End Sub

     
    ЗарСпасБол

    Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 15:18 19-05-2013 | Исправлено: Vadim39, 15:21 19-05-2013
    XPerformer



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

    Код:
     
    Sub pr1()  
     Dim sl As String, i As Long  
      dim ch
     With ActiveDocument.Range.Characters  
         For i = 1 To .Count  
             ch = .Item(i)
             If InStr(sl, ch) = 0 Then sl = sl + ch  
         Next  
     End With  
       
     Debug.Print sl  
       
     End Sub

    чтобы два раза не вычислять элемент коллекции, но это что-то не сильно ускоряет
     
    Добавлено:
    Вот вариант работает быстро
     

    Код:
    Sub pr1()
     Dim sl As String, i As Long
     Dim n, ch, ss As String
     
     
     ss = ActiveDocument.Range.Text
     n = Len(ss)
     sl = ""
     
     For i = 1 To n
         ch = Mid(ss, i, 1)
         If InStr(sl, ch) = 0 Then sl = sl + ch
     Next
     
     Debug.Print sl
     

    Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 16:18 19-05-2013 | Исправлено: XPerformer, 16:29 19-05-2013
    Vadim39



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XPerformer
    Большое спасибо!
    Выходит, основное время уходило на то, чтобы каждый раз получать "ActiveDocument.Range.Characters"

    Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 21:50 19-05-2013 | Исправлено: Vadim39, 21:56 19-05-2013
    XPerformer



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    одно - это коллекция объектов, тяжелая структура
    второе - это строка, одним массивом передается и обрабатыватеся

    Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 22:04 19-05-2013
    Vadim39



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно запустить из макроса диалог поиска и замены, причем курсор должен оказаться в начале поля замены.
    Если вызвать Dialogs(wdDialogEditReplace).Show, то после выполнения замены появляется сообщени об ошибке. Кроме того, я не знаю как перемещать курсор внутри диалогового окна.
    Если же вызывать диалог с помощью SendKeys "^h", все отлично, и следующие за ним    SendKeys "{TAB}"  
    SendKeys "{HOME}"  
    ставят курсор в нужное место, но возникает другая проблема: все это работает только, в том случае, если в момент вызова раскладка клавиатуры английская, если же русская - вместо вызова диалога в документ впечатываются "h" и знак табулятора.
    Если принципиального решения не существует, то может кто-нибудь подскажет, как написать скрипт для определения и управления раскладкой клавиатуры.
     
    ЗарСпасБол!
     
     

    Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 09:19 21-05-2013
    Vadim39



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Решил проблему, но совершенно идиотским способом: назначил вызов диалога замены на Ctrl_0. Почему-то SendKeys "^0" запускается из макроса при любой раскладке.  
    В процессе экспериментов выяснилось, что если назначить на F11, диалог не вызывается при любой раскладке клавиатуры... Полный бред

    Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 19:25 21-05-2013
    Futurism

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, пожалуйста, написать скрипт для ворда, чтобы например из книги в док формате из всего массива текста взять случайным образом какие то слова и их выставить в столбец, страниц на 10.  
    примерно, чтобы это так выглядело
    слово1
    слово2
    ...
    слово(n)
     
    и такой столбик на 10 страниц. Единственное, чтобы слова не повторялись и выстраивались по алфавиту;)

    Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 11:41 23-05-2013
    Открыть новую тему     Написать ответ в эту тему

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