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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуста...как ссделать вот такую задачу:
    y=lnx   если 2a+b<0
    y=tg(ax-b^2)   если 2a+b=0
    y=arctg(2x)    если 2a+b>0

    Всего записей: 2 | Зарегистр. 12-04-2007 | Отправлено: 00:08 12-04-2007
    apexfmm



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    amnil
    Это тема по макросам для WORD!

    ----------
    -Если вы не испытываете желания преступить хоть одну из десяти заповедей - значит, с вами что-то не так
    [WINXP SP3eng, Intel P75, CoreDuoE7400 2.8GHz, 2Gb DDR2, Radeon HD4830]

    Всего записей: 782 | Зарегистр. 28-04-2005 | Отправлено: 11:58 12-04-2007
    amnil

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ДА.....а препод сказал по VBA-)))
    можно еще вопросик...можешь подсказать как это хоть делать...

    Всего записей: 2 | Зарегистр. 12-04-2007 | Отправлено: 23:17 12-04-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    amnil
    Цитата:
    а препод сказал по VBA
    VBA - Basic, он же разный... Вы бы уточнили у препода или у других студентов, в ЧЁМ Вам нужно сделать данную работу. Или, методичку попробуйте почитать... ;-))
    ну в Word/Excel "Редактор Visual Basic" открывается через меню "Макрос" или Alt-F11
    если не выясните, что конкретно Вам нужно, то я бы рекомендовал это сделать макросом в Excel - топик Excel VBA (там проще и нагляднее задать ваши исходные данные и отобразить результат).
     
    p.s. кстати, господа, буду очень признателен, если кто-то приведёт пример макроса на VBA для Word, который:  
    1) считает две числовые переменные, заданные на листе документа Word
    2) что нибудь с ними сделает (ну, например, перемножит) и результат поместит в документ в определённое место.
    Это возможно?
     

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 09:21 13-04-2007
    jONES1979



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SERGE_BLIZNUK
    как раз вчера смотрел хелп по "полям", тем что вставляются по ctrl+F9, а по Alt+F9 делают своё визибл/инвизибл. Вроде они поддерживают базовые вычисления и даже инструкции типа if можно в теле "поля" прописать...  
    Сейчас занимаюсь практическими изысканиями

    Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 09:42 13-04-2007
    SERGE_BLIZNUK

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

    Цитата:
    как раз вчера смотрел хелп по "полям", тем что вставляются по ctrl+F9, а по Alt+F9 делают своё визибл/инвизибл.

    ну, там точно можно вычислять (тут был пример получения последнего числа месяца).
    Но я спрашивал, как к этим полям (или к другим элементам - например, к ячейке таблицы!) можно обратиться из макроса на VBA...

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 10:31 13-04-2007
    jONES1979



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SERGE_BLIZNUK по имени! не удивлен?
    ну то есть как обычно в ворде, смотри его объектную модель.
    вот к примеру вывод "кодов" всех полей
     

    Код:
     
    Public Sub ShowFields()
        Dim wa As Application
        Dim wd As Document
        Dim curF As Field
         
      Set wa = Application
      Set wd = ActiveDocument
       
      For Each curF In wd.Fields
        Debug.Print curF.Code
      Next
    End Sub
     

    или ты про другое? какие то конкретные сложности?

    Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 11:06 13-04-2007 | Исправлено: jONES1979, 11:06 13-04-2007
    sadmn



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, есть ли решение:
    создаю новый файл, в нём пишу макрос, назначаю его кнопочке на панели.
    И макрос, и панель с кнопкой сохраняются в данном файле. Сам файл сохраняется как шаблон в папке
    C:\Program Files\Microsoft Office\OFFICE11\STARTUP
     
    Теперь при запуске документа ворд, данный шаблон должен подгружаться, однако выскакивает сообщение о том, что данный файл содержит макросы, и следует выбрать отключать их или нет.
     
    Можно ли сделать так, чтобы выбранная безопасность касаемо макросов не распространялась на файлы, находящиеся в вышеназванной папке? Общий уровень менять не хотелось бы.
     
    Заранее спасибо.

    Всего записей: 1354 | Зарегистр. 04-06-2006 | Отправлено: 21:19 13-04-2007 | Исправлено: sadmn, 21:24 13-04-2007
    apexfmm



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

    Цитата:
    Общий уровень менять не хотелось бы.

    Отключи совершенно спокойно. За последние 5 лет макровирус в документах WORD видел 1 раз, да и то не из сети, а принесенный ламером на дискете

    ----------
    -Если вы не испытываете желания преступить хоть одну из десяти заповедей - значит, с вами что-то не так
    [WINXP SP3eng, Intel P75, CoreDuoE7400 2.8GHz, 2Gb DDR2, Radeon HD4830]

    Всего записей: 782 | Зарегистр. 28-04-2005 | Отправлено: 10:05 14-04-2007
    sadmn



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    apexfmm
    Проблема не в макровирусах, а просто в желании узнать, когда открываю документ с макросами - что автор к ним ещё какой-то "прибамбас" сделал ))
     
    В настройках безопасности есть "Надёжные издатели" - нельзя ли самому себе выписать бессрочный сертификат?
     
    Пока ограничился редактированием Normal.dot - в него можно хоть что добавить и никто слова не скажет )

    Всего записей: 1354 | Зарегистр. 04-06-2006 | Отправлено: 12:05 14-04-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sadmn
    Прикрепии к шаблону цифровой сертификат VBA, генератор его входит в Office. Одни раз ответишь, что доверяешь сам себе и далее вопросов не будет (Правда, сам не делал подобного только читал, так что совет требует доизучения)

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:33 16-04-2007
    sadmn



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    Спасибо за указание, в какую сторону двигаться!
    Именно это я сначала и хотел сделать, просто не знал как ))

    Всего записей: 1354 | Зарегистр. 04-06-2006 | Отправлено: 15:05 17-04-2007
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет.
     
    Есть такая программа  
    1.Dekart Secrets Keeper - платная
    и
    2.AxCrypt - бесплатная
     
    Платная в отличие от платной создаёт в Word кнопочку на панели инструментов и там сразу можно сохранить документ и зашифровать и открыть.
    Как можно такую кнопочку сделать для бесплатной програмули ?
     
    Заранее спасибо.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 17:50 03-05-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slech
    Х-м, а как делает бесплатная, в плане

    Цитата:
    сохранить документ и зашифровать и открыть

    А так чтобы запустить бесплатную кнопочкой, добавляешь кнопку и навешиваешь на неё следующий макрос
    Public Sub RunAxCrypt()
        Dim pShell As Object
         
        Set pShell = CreateObject("WScript.Shell")
        pShell.Run("d:\path\AxCrypt.exe")
    End Sub
     

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 18:49 03-05-2007
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri
    невыходит чёто
    вот рисунки 1 2

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 21:36 03-05-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slech
    извините, что влезу не в свой разговор.
    1) у вас оба рисунка 1 и 2 - одна и та же ссылка (т.е. рисунок один)
    2) ошибка при выполнении строчки pShell.Run("d:\path\AxCrypt.exe")  
    надеюсь, что вы вместо "d:\path\" написали правильный путь к вашей AxCrypt.exe?..
     

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 22:35 03-05-2007
    popkov

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Хочу написать макрос, автоматически удаляющий в текущем документе коды всех полей, созданных программой EndNote.
    Нашёл в Интернете клёвый пример такого макроса, модифицировал его, чтобы он искал коды только полей типа wdFieldAddin и выполнял для них команду Unlink. Работает замечательно, но почему-то не удаляет поля EndNote, расположенные в сносках внизу страницы.
    Коды этих полей, так же как и коды полей в основном тексте, начинаются с  

    Цитата:
    {ADDIN EN.CITE  

    Вот код макроса:

    Код:
    Sub RemoveAddin_FieldCodes ()
      Dim doc As Document
      Dim fld As Field
      Set doc = ActiveDocument
      For Each fld In doc.Fields
        fld.Select
        If fld.Type = wdFieldAddin Then
          fld.Unlink
        End If
      Next
      Set fld = Nothing
      Set doc = Nothing
    End Sub

    Как бы его модифицировать, чтобы в сносках (footnotes и endnotes) коды полей также удалялись?

    Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 09:36 05-05-2007 | Исправлено: popkov, 09:41 05-05-2007
    popkov

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Этот макрос удаляет коды полей типа ADDIN, расположенных: в основном тексте (в т.ч. рамках и таблицах), сносках (концевых и внизу страницы), надписях и сгруппированных надписях (расположенных на полотне или вне его).
     
    Вот получившийся код:
    Я совсем новичок в VBA, поэтому буду очень признателен за замечания о возможных багах. Если можно сделать проще - буду рад услышать, как?
     
     
    Вообще, общая цель - чтобы все поля EndNote, которые можно добавить в документ, где бы они ни были, правильно обрабатывались (удалялись коды полей)! Перед выполнением должен быть запрос подтверждения.
     
    И ещё бы хотелось, чтобы автоматически выставлялся правильный язык для текста, в который превращаются поля (EndNote по умолчанию для всех полей выставляет язык:Английский). После удаления кодов полей данным макросом язык большинства русских слов меняется на руссский, но, почему-то, не у всех слов (хотя у большинства).
     
    Данный макрос удаляет коды всех полей типа ADDIN. Такие поля я пока встречал только у EndNote, но для надёжности неплохо бы ввести проверку на соответствие: поля EndNote начинаются с
    Цитата:
    {ADDIN EN.CITE  
    и (только одно поле в документе - сам автоматически генерируемы список литературы) с
    Цитата:
    {ADDIN EN.REFLIST
    .
    Можно ли как-то сделать проверку?

    Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 12:30 05-05-2007 | Исправлено: popkov, 02:29 07-05-2007
    popkov

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    2ALL
    Подскажите, пожалуйста, а то замучался уже!
    Есть ли опция Find, позволяющая отменить поиск по всему документу, ограничив его конкретным Range или, на худой конец, Selection?

    Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 02:11 09-05-2007 | Исправлено: popkov, 02:11 09-05-2007
    AndVGri

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

    Цитата:
    Есть ли опция Find, позволяющая отменить поиск по всему документу

    Собственно

    Код:
     
    Public Sub TestFind()
        Dim pRange As Range
         
        Set pRange = ActiveDocument.Range(1, 10)
        If pRange.Find.Execute(FindText:="8") Then
            MsgBox pRange.Find.Text
        Else
            MsgBox "Not Found"
        End If
    End Sub
     

    Набиты в документе числа, разделённые пробелом, от 1 до 8.

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:59 09-05-2007
    Открыть новую тему     Написать ответ в эту тему

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