Перейти из форума на сайт.Реклама на Ru.Board


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Alex_Piggy

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

Цитата:
не совсем помогает. ". \1" Ставит: точку пробел Заглавная буква пробел оставшееся слово.  То есть отделяет первую букву.  Пока в мыслях загвоздка

Не понял...

Код:
 
Dim r
 Set r = ActiveDocument.Range
 With r.Find
     .Text = " - ([A-ZА-Я])"
     .Forward = True: .Wrap = wdFindContinue: .format = False : .MatchCase = False: .MatchWholeWord = False:    .MatchAllWordForms = False :  .MatchSoundsLike = False: .MatchWildcards = True
     .Replacement.Text = " . \1"
     .Execute Replace:=wdReplaceAll
 End With
 

Вроде заменяет правильно (Office 2003)...
 

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 14:15 02-02-2014 | Исправлено: Alex_Piggy, 14:34 02-02-2014
msmih



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

Цитата:
Не понял...  

теперь я не понял))) вроде все тоже самое было, но первую букву в моем варианте отделял.
Ваш вариант идеально работает.  Большое спасибо!

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 14:39 02-02-2014
msmih



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

Код:
 
For Each Paragraph In ActiveDocument.Paragraphs
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "то что я ищу"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
     
    If Selection.Find.Found = True Then Paragraph.Range.Delete
Next
 

находит. но удаляет не текущий абзац, а текущий и все перед ним стоящие.
Буду признателен за подсказку

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 16:39 02-02-2014 | Исправлено: msmih, 16:42 02-02-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
msmih
А что если зайти с другой стороны?

Код:
 
With ActiveDocument.Range.Find
         .ClearFormatting
         .Text = "test"
         .Forward = True
         .Wrap = wdFindContinue
         .format = False
         .MatchCase = False
         .MatchWholeWord = False
         .MatchWildcards = False
         .MatchSoundsLike = False
         .MatchAllWordForms = False
    Do While .Execute
      With .Parent
       .Expand Unit:=wdParagraph
       .Delete
      End With
    Loop
End With
 

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 17:21 02-02-2014
msmih



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

Цитата:
А что если зайти с другой стороны?  

Отработало все отлично! Еще раз благодарю! и преклоняю голову за ваш труд!

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 18:17 02-02-2014
agevelenko

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, с задачей.  
 
В результате расчета создается каждый раз НОВЫЙ файл .doc с таблицами результатов. Есть намерение связать полученные таблицы с постоянно существующим файлом. Но поскольку файл новый, постоянно рабочие ссылки создать не получается. Пробовал пересохранять новый файл в каком-то постоянном с тем же именем, с замещением, но ссылки на таблицы в этом случае теряются. То есть в документе, источнике связанных таблиц, эти таблицы даже временно не должны удаляться или замещаться новыми.
 
В Worde есть возможность сохранить файл поверх существующего с ВНЕСЕНИЕМ В НЕГО ИЗМЕНЕНИЙ. Эта возможность решает проблему, но в коде ВБА такой опции я не нашел. activedocument.saveas и activedocument.saveas2 сохраняют файл с замещением без запроса. Как можно решить задачу?

Всего записей: 9 | Зарегистр. 12-03-2014 | Отправлено: 14:21 12-03-2014
agevelenko

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, с другой проблемой .
 
Есть необходимость получить в Ворде адрес последней строки таблицы, существующей в Экселе. Почему не работает следующий способ: (?)
 
Dim Ex as Object
 
Set Ex = GetObject(путь на файл Эксель)
Addr$=Ex.Application.Range("VAR1").End(xlDown).Address( , , xlR1C1)
 
В этом коде, расположенном на листе Ворда, ВБА не распознает метод .End(xlDown). Пишет ошибку 1004. Ячейка Range("VAR1") располагается не на первом листе, если вдруг это важно.

Всего записей: 9 | Зарегистр. 12-03-2014 | Отправлено: 18:21 19-03-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток. Буду признателен за подсказку.
С помощью VBA меняю один знак на кавычки. условно замена "-" на chr(34). Но результат всегда непредсказуем: могут появиться парные кавычки " или << и >>. Совсем худо когда идет сочетание "текс>>. Как жестко зафиксировать результат? чтобы была однозначная замена.

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 21:48 19-03-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время
agevelenko
Странный адрес "VAR1". Это что?  
В экселе эта же конструкция работает?  (MsgBox Application.Range("VAR1").End(xlDown).Address( , , xlR1C1))
Выбор листа MYNAME - Ex.Application.WorkSheets("MYNAME").Range....
 
msmih
У Вас включена автозамена кавычек? Если ее отключать на время работы скрипта?

Код:
 
Application.Options.AutoFormatReplaceQuotes = False
Application.Options.AutoFormatAsYouTypeReplaceQuotes = False
 

http://technet.microsoft.com/en-us/library/ee692775.aspx

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 00:09 20-03-2014
AndVGri

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

Цитата:
Странный адрес "VAR1". Это что?  

В формате файла для Excel 2007 последний столбец XFD, так что адрес ячейки VAR1 вполне допустим. Ошибкой может быть:
1. Скорее всего, так как судя по коду осуществляется позднее связывание, то ссылка на библиотеку Excel не установлена (Tools/References). Тогда нужно заменить xlDown на -4121, а xlR1C1 на -4150. Иначе откуда VBA возьмёт, что стоит за именами перечислений?
2. Текущий лист не рабочий лист (может быть, например, диаграмма).

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:53 20-03-2014
agevelenko

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Большое спасибо за подсказку 1), действительно помогло.

Всего записей: 9 | Зарегистр. 12-03-2014 | Отправлено: 10:58 20-03-2014
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа,  
Чтобы любой открываемый мною в Ворде документ открывался в удобном для меня виде (по ширине страницы) "воткнул" вот такой код в модули шаблона Normal.dotm

Цитата:
Public Sub AutoOpen()
    ThisDocument.Application.ActiveWindow.View.Zoom.PageFit = wdPageFitBestFit
End Sub

и все вроде бы хорошо, но есть одно НО.
Если открываю документ, скачанный из Интернета, в нем по-умолчанию отключаются все макросы (и вверху появляется: Protected view. Файл скачан из Интернета и может быть небезопасен.) Соотвественно в такой ситуации из-за наявности вышеприведенного кода Ворд выдает мне ошибку (Run-time error '4248'. This command is not available because the document is open.).
Вопрос: как избежать появления этой ошибки?
Т.е. как проверять, что если документ открывается в режиме Protected view, то не выполнять данный макрос?
Добавлено
Разобрался сам. Добавил условие и все заработало:

Цитата:
If ThisDocument.Application.ActiveProtectedViewWindow Is Nothing Then
        ThisDocument.Application.ActiveWindow.View.Zoom.PageFit = wdPageFitBestFit
End If

но документ на всю ширину страницы почему-то не разворачивается (несмотря на команду : ThisDocument.Application.ActiveWindow.View.Zoom.PageFit = wdPageFitBestFit
Так что вопрос: как из vba рзвернуть окно документа на всю ширину страницы?
 

Всего записей: 2568 | Зарегистр. 04-01-2005 | Отправлено: 13:30 10-04-2014 | Исправлено: mrdime, 16:03 10-04-2014
YuriyRR



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mrdime
Запиши макрос и посмотри команды - самый простой метод изучения.

Всего записей: 490 | Зарегистр. 07-06-2007 | Отправлено: 00:32 11-04-2014
mrdime



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

Цитата:
Запиши макрос и посмотри команды - самый простой метод изучения.

Так и сделал. Только по непонятным мне причинам он НЕ РАБОТАЕТ.
При разворачивании открытого документа на всю ширину окна, запись макроса мне выдала вот такую строчку:
ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitBestFit
Что эта команда, что та,  что я использовал раньше:
ThisDocument.Application.ActiveWindow.View.Zoom.PageFit = wdPageFitBestFit  
Не дают желаемого результата.
Если я "руками" меняю масштаб отображения документа допустим до 50%.
То после закрытия Ворда, и запуске вновь, новый документ открывается почему-то не по всей ширине экрана, а в последнем масштабе, в данном случае - 50% например.
Мне пока неясно почему так происходит.

Всего записей: 2568 | Зарегистр. 04-01-2005 | Отправлено: 01:35 12-04-2014
agevelenko

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не может ли кто-нибудь прояснить несколько вопросов о свойстве StatusBar? в справке VBA Word написано, что это свойство более не поддерживается, но нет информации, появилось ли что-нибудь на замену.
И второй вопрос. Можно ли как-то остановить автоматическое обновление строки состояния Вордом (чтобы то, что я вписал в нее, не исчезало через секунду?).

Всего записей: 9 | Зарегистр. 12-03-2014 | Отправлено: 13:08 14-04-2014
Leviathann

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые знатоки!
 
Подскажите, пожалуйста, простую вещь - каким скриптом можно выделить или удалить все объекты WordArt в Word 2010 ?

Всего записей: 4 | Зарегистр. 12-07-2007 | Отправлено: 12:29 15-04-2014
agevelenko

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Leviathann
 
Попробуй так.
 
    Dim MySh As Shape
     
    For Each MySh In ActiveDocument.Shapes
        If MySh.Type = msoTextEffect Then
            MySh.Delete
        End If
    Next MySh
 
Свойство msoTextEffect должно указывать на объект WordArt, но в Word 2010 этого не происходит. Попробуй др. значения (см. MsoShapeType Enumeration в справке). У меня объект WordArt распознается как надпись (msoTextBox).

Всего записей: 9 | Зарегистр. 12-03-2014 | Отправлено: 14:18 15-04-2014
Leviathann

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
За несколько проходов всё вычистил, отлично! Вторая половина мусора оказалась как раз msoTextBox.
Благодарю!

Всего записей: 4 | Зарегистр. 12-07-2007 | Отправлено: 14:51 15-04-2014
cccs54

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста!
Я сделал форму.  
На ней поле TextBox1 и кнопка CommandButton1, так же есть  генератор чисел от 1 до 1000. Отдельно лежит фаил с текстом sobit.txt.
Как объединить генератор с текстовым фаилом, чтоб случайным образом из него печаталось слово в  поле TextBox1 при нажатии на кнопку CommandButton1?

Всего записей: 1 | Зарегистр. 01-05-2014 | Отправлено: 22:16 01-05-2014
msmih



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

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 19:03 29-07-2014 | Исправлено: msmih, 20:44 21-08-2014
Открыть новую тему     Написать ответ в эту тему

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