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


Система 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

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

Gena1971



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexey87
Так может об excel речь? Это там скрывается вроде строки/столбцы и плюсиком раскрывается.
А в ворде никогда не видел функции скрытия ячеек.
 
ALeXkRU

Цитата:
ЗЫ: создать ещё проще можно: включить запись макроса; выделить столбец; правый клик/скрыть; остановить макрос и смотреть, что получилось..

При записи макроса контекстное меню мыша в ворде не работает. Надо искать всё в меню и кнопками.

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

Всего записей: 2490 | Зарегистр. 25-01-2005 | Отправлено: 18:17 09-01-2014
ALeXkRU



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexey87
добавил пример макроса, реализующего предложенный выше вариант для ворда
 
ЗЫ: всё равно не понимаю, зачем это может понадобиться в вордовском документе

Всего записей: 9920 | Зарегистр. 03-12-2003 | Отправлено: 18:52 09-01-2014 | Исправлено: ALeXkRU, 21:13 09-01-2014
Alexey87

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

Всего записей: 489 | Зарегистр. 27-01-2008 | Отправлено: 17:02 10-01-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нужен совет. есть vbs скрипт выводящий отчет в word. Отрабатывает на ура если в word нет надстроек. На компе, где word стоит с надстройкой (орфо), начинаются грабли: выскакивает при автоматическом закрытии word сообщение о том что шаблон normal.dotm занят другим приложением нужна нажать ОК и еще отказаться от сохранение шаблона normal.dotx. Как на vbs обойти сею проблему?

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 21:53 28-01-2014
Gena1971



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
msmih
Да какой нибудь конфликт переменных, подпрограмм или ещё чего. Стоит для начала просто пошагово пройти по программе - выяснить на каком месте сбоит и откорректировать скрипт.

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

Всего записей: 2490 | Зарегистр. 25-01-2005 | Отправлено: 23:42 28-01-2014
msmih



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
msmih
Ну так в скрипте и изменить команду закрытия ворда на команду закрытия окна. Я в этих командах сильно не разбираюсь. Небыло нужды открывать/закрывать из vba файлы. Но в ветке по ворду я недавно модифицировал чужой скрипт. Там можно достать нужные команды.
 
Добавлено:
Стоп, я чего то тоже недочитал. VBS - это же не VBA. Т.е. у тебя скрипт внешний открывает ворд и закрывает его? Тогда это немного не то. VBS я не знаю как с вордом взаимодействует.

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

Всего записей: 2490 | Зарегистр. 25-01-2005 | Отправлено: 21:50 29-01-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gena1971
буду дальше думать. хотя можно передать управление на внутренний макрос. Как временная заглушка. на этом остановился пока.
to all
есть макрос, который приведен ниже. Ищет текст между тире, выделяет, подсвечивает красным. Работает отлично.
Как сделать чтобы вместо подсвечивания изменял формат найденного текста на курсив. Упарился вдрызг. пробовал разные варианты, ничего толком не получается. буду признателен за совет.

Код:
 
Sub format()
Dim r
Set r = ActiveDocument.Range
Selection.HomeKey wdStory
With r.Find
   ' .ClearFormatting
    .Text = "- * - "
    .Forward = True
    .Wrap = wdFindContinue
    .format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    If .Execute Then
        ActiveDocument.Range(r.Start + 1, r.End - 1).Select
       .HitHighlight .Text, HighlightColor:=wdColorRed
 
    End If
 
End With
Selection.HomeKey wdStory
End Sub  

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

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, msmih
Активный документ в VBS сохраняется так же, как и в VB. Можно через ActiveDocument.Save, можно через объект, соответствующий конкретному документу (присваивается при открытии/создании). Пример Задачи на bat-файлах 11.
Сам скрипт можно?
Попробуйте (сейчас проверить не могу)

Код:
 
If .Execute Then  
   Set Selection = ActiveDocument.Range(r.Start + 1, r.End - 1).Select
   Selection.Font.Italic = True
   Selection.Font.Color = wdColorRed  
End If
 


Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 22:42 29-01-2014
Gena1971



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

Цитата:
Можно через ActiveDocument.Save, можно через объект, соответствующий конкретному документу (присваивается при открытии/создании).  

Если так, возможно и ActiveWindow.Close сработает закрыв только текущее окно, но не весь ворд. Это я к этому
Цитата:
или как закрыть только активный (сформированный скриптом) документ?

 


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

Всего записей: 2490 | Зарегистр. 25-01-2005 | Отправлено: 00:42 30-01-2014
msmih



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

Цитата:
Код:
 
If .Execute Then  
   Set Selection = ActiveDocument.Range(r.Start + 1, r.End - 1).Select
   Selection.Font.Italic = True
   Selection.Font.Color = wdColorRed  
End If
 
 

 
На этом этапе и возникает загвоздка. обрабатывает только первое найденное совпадение. Дальше не ищет.

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 05:58 30-01-2014
panda3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
msmih
Ваще непонятен смысл этих телодвижений для простой операции поиска/замены.
 

Код:
With ActiveDocument.Range.Find
  .ClearFormatting
  .Text = "- * -"
  .Forward = True
  .Wrap = wdFindContinue
  .format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchWildcards = True
  .MatchSoundsLike = False
  .MatchAllWordForms = False
  With .Replacement
    .ClearFormatting
    .Text = ""
    .Font.Italic = True
    .Font.Color = wdColorRed
  End With
  .Execute Replace:=wdReplaceAll
End With

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 10:15 30-01-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
panda3
низкий поклон! все отлично сработало.
 
to all
задам еще один вопрос. из разряда vbs\vba.
Пытаюсь с помощью xmlhttp.responsetext получить текст с сайта.
Но получаю только часть текста стабильно 3800 символов).
ставил условия xmlhttp.ReadyState = 4, if xmlhttp.status = 200 условия выполняются, но все равно приходит только часть текста.
В мануилах прочитал, что xmlhttp.responsetext по объему не лимитируется.
где может быть проблема?

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 20:37 30-01-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
msmih
Не знаю. Пример, пожалуйста. Может что в обработке?
То, что ниже сохраняет файл размером около 600 кб.

Код:
 
Set XMLHTTP = CreateObject ("Msxml2.ServerXMLHTTP.6.0")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objTextStream=FSO.OpenTextFile("output.txt",2,1)  
XMLHTTP.Open "GET", "http://forum.ru-board.com/misc.cgi?action=printtopic&forum=33&topic=5312", false
XMLHTTP.Send
If ((XMLHTTP.readyState = 4) AND (XMLHTTP.status=200)) Then objTextStream.Write XMLHTTP.responseText
 

PS. Программирование "удобняшек" на VBScript (Часть 2)
PPS. MsgBox Len(XMLHTTP.responseText)

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 21:25 30-01-2014 | Исправлено: Alex_Piggy, 21:32 30-01-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Буду признателен еще за вот какую подсказку. Как подсчитать с помощью VBA число символов в параграфе (word)? и при превышении (ну скажем 1000 символов) - удалить параграф?

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

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

Код:
 
For Each Paragraph In ActiveDocument.Paragraphs
        If (Paragraph.Range.Characters.Count > 1000) Then Paragraph.Range.Delete
Next
 


Цитата:
 
Цитата: По поводу Word.Application - Вы использовали .InsertAfter вместо .TypeText, верно?  
 немного не так. может быть коряво, но  
 .Paragraphs.Add.Range.Text=XMLHTTP.responseText  
 какой вариант вернее?

Не знаю. Я слишком мало пользуюсь Word VBA, чтобы ответить на этот вопрос... Надеюсь, что ответит кто-нибудь из знатоков.

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



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

Цитата:
Я слишком мало пользуюсь Word VBA

эту функцию прописал в vbs. пока работает.
Вам огромное спасибо за подсказки!

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще раз Need Help. Буду признателен за следующую подсказку на VBA.
Есть текст формата

Код:
 
Какой-то текст - Еще раз какой-то текст. Третий текст - продолжение.
 

Необходимо найти по следующему условию: проблем тире пробел заглавная буква.
Заменить только: пробел тире на точку.
 
С помощью спецсимволов [А-Я]{1;1} искомое значение нахожу, но замена происходит вместе с первой заглавной буквой. Поэтому нужна помощь, никак не соображу.

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

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, msmih
Попробуйте искать выражение
" - ([A-ZА-Я])"
И заменять на  
" . \1"

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток, Alex_Piggy
не совсем помогает. ". \1" Ставит: точку пробел Заглавная буква пробел оставшееся слово.
То есть отделяет первую букву.
Пока в мыслях загвоздка

Всего записей: 1141 | Зарегистр. 29-01-2006 | Отправлено: 14:00 02-02-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