Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Word VBA

Автор: MIHMIH007
Дата сообщения: 09.10.2008 13:01
Подскажите плиз как сделать так чтобы на панельке была кнопка для запуска файла .EXE то есть просто расположить на панели ворда кнопку для запуска какого либо процесса?
Спасибо
Автор: baston
Дата сообщения: 09.10.2008 18:49

Цитата:
Подскажите плиз как сделать так чтобы на панельке была кнопка для запуска файла .EXE то есть просто расположить на панели ворда кнопку для запуска какого либо процесса?


Вот пример макроса для запуска блокнота:

Код: Sub Notepad()
Shell "c:\windows\notepad.exe", 1
End Sub
Автор: MIHMIH007
Дата сообщения: 09.10.2008 22:50
Подскажите плиз есть шаблоны для ворда так вот некоторые при добавлении некоторых шаблонов появляется вкладка НАДСТРОЙКИ и кнопки для них.... каким образом были сделаны данные кнопки?
Спасибо
Автор: baston
Дата сообщения: 10.10.2008 16:59
MIHMIH007, автоматически (если вы имеете в виду Word 2007). А вообще по данной теме есть замечательный сайт и заметка Грега Макси: http://gregmaxey.mvps.org/Customize_Ribbon.htm
Автор: MIHMIH007
Дата сообщения: 11.10.2008 11:31
baston
Спасибо большое за помощь вроде разобрался))) Скажите плиз вот я например создал кнопку в Word 2007 она поместилась в раздел НАДСТРОЙКИ как я могу изменить размер её побольше ? есть ли какая то команда в макросе?
Автор: MIHMIH007
Дата сообщения: 11.10.2008 22:59
Скажите плиз как создать макрос из готового элемента??
например есть рамка и я хочу чтобы она вставлялась постоянно но рамка уже готовая... как сделать макрос на постоянную её вставку?
спасибо
Автор: baston
Дата сообщения: 12.10.2008 21:30

Цитата:
плиз вот я например создал кнопку в Word 2007 она поместилась в раздел НАДСТРОЙКИ как я могу изменить размер её побольше ? есть ли какая то команда в макросе?

Нет, это в макросе не изменить. Это внутренности Word. Но можно как-то изменить через программирование XML, по-моему Грэг Макси и об этом где-то писал. Поищите.

Что за рамка? И что за слово "плиз"?
Автор: MIHMIH007
Дата сообщения: 13.10.2008 15:15
Скажите пожалуйста)))
Есть например макрос который вставляет рамки по ГОСТ я хочу оттуда выдрать рамку... и сделать свой макрос на эту рамку но как сделать так чтобы ворд запомнил что эту рамку нужно вставлять с шаблона?
Автор: baston
Дата сообщения: 13.10.2008 16:05
Вам нужно скопировать эту рамку и сохранить ее как элемент автотекста (Alt+F3). А затем уже при создании документа вы просто вставляете этот сохраненный элемент автотекста.
Автор: mihasska
Дата сообщения: 19.10.2008 14:52
Помогите, плиз.
В документе WORD несколько таблиц. Как определить в какой из них находиться курсор.
Автор: baston
Дата сообщения: 21.10.2008 14:26
mihasska
Попробуйте так:

Код: Sub numCurTable()
'номер текущей таблицы
MsgBox ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
End Sub
Автор: ixet
Дата сообщения: 07.11.2008 22:03
Уважаемые, никто обработкой прайсов не занимается? Когда регулярно требуется быстро перемножить/разделить какой-нибудь столбец на курс доллара или скидку. Разумеется, всё это легко решается в Excel, но при больших объемах однотипной работы удобнее был бы макрос для Word, работающий следующим образом:
1)выделить нужные ячейки, запустить макрос
2)в окне макроса чекером выбрать метод (умножение, деление) и множитель/делитель, или просто ввести выражение вида «х 26,4»
3)также в окне макроса задать точность – число знаков после запятой или, наоборот, округление до единиц-десятков-сотен
4)после Ok цифры в ячейках пересчитываются.
Сам пробовал такой макрос замутить, да в VBA пока едва-едва…
Автор: ItsJustMe
Дата сообщения: 24.11.2008 06:10
У меня возникла трабла, бьюсь уже две недели.
Демонстрация (Word 2007):
Пробуем исполнить этот код

Код: Sub NewCanvasShape()
Dim shpCanvas As Shape
Dim shpCanvasShape As Shape

'Add a new drawing canvas to the active document
Set shpCanvas = ActiveDocument.Shapes.AddCanvas( _
Left:=100, Top:=75, Width:=250, Height:=200)

'Add a circle to the drawing canvas
Set shpCanvasShape = shpCanvas.CanvasItems.AddShape( _
Type:=msoShapeOval, Left:=25, Top:=25, _
Width:=150, Height:=150)
MsgBox "Left=" & shpCanvasShape.Left & vbNewLine & "Top=" & shpCanvasShape.Top
End Sub
Автор: bdfy
Дата сообщения: 28.11.2008 01:59
Есть документ. в нем множество связанных с Excel, mathcad, просто внешними рисунками блоков. создавались они через Правка-специальная вставка-связать.
Нужно обновить только связанные рисунки (emf формата), не трогая остальные блоки. как это сделать ? другими словами как выделить в документе все рисунки ?
Автор: zolivan
Дата сообщения: 02.12.2008 12:23
Подскажите пожалуйста.
Создал такой код, смысл его - переводит буквы из ВЕРХНЕГО РЕГИСТРА в нижний, за исключением первого слова и слов после точек, где в нижний регистр не должны переводиться первые символы:

Sub Shift()
Dim sText As String, sLText As String, sPrText As String, sNewText As String
Dim contSent As Integer, i As Integer, countWords As Integer

' Форматирование первого слова
i = 1
countWords = ActiveDocument.Words.Count 'количество слов
sText = ActiveDocument.Words(i) ' возвращаем первое слово
' Если первое слово, то заглавная буква
sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1)))
sPrText = sText 'принимаем значение предыдущего слова, для следующего прогона
sNewText = sLText 'Накапливаем форматированный текст

' Форматирование первого слова
' Цилк, который переводит слова в нижний регистр, кроме тех, что после точки
For i = 2 To countWords
sText = ActiveDocument.Words(i) ' возвращаем очередное слово
' Если предыдущая точка, то заглавная буква
If sPrText = (Chr(46) & Chr(32)) Or sPrText = (Chr(46) & Chr(13) & Chr(10)) Then
sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1)))
Else
sLText = LCase(sText)
End If
sPrText = sText 'принимаем значение предыдущего слова, для следующего прогона
sNewText = sNewText & sLText 'Накапливаем форматированный текст
Next

' Выделение и замена текста на отформатированный
ActiveDocument.Range.Select
Selection.text = sNewText
End Sub

Проблема в том, что условие:
' Если предыдущая точка, то заглавная буква
If sPrText = (Chr(46) & Chr(32)) Or sPrText = (Chr(46) & Chr(13) & Chr(10)) Then
sLText = Left(sText, 1) & LCase(Right(sText, (Len(sText) - 1)))
Else
не отрабатываеться на новом абзаце, т.е. там где новый абзац тоже слово с маленькой буквы, а должно предложение начинаться с большой.

Вот так.

Может sPrText = (Chr(46) & Chr(13) & Chr(10)) - это запись не верна, как правильно?
Заранее спасибо!
Автор: dneprcomp
Дата сообщения: 02.12.2008 19:12
zolivan
Может я чего-то не понял, но по описанию
Цитата:
Создал такой код, смысл его - переводит буквы из ВЕРХНЕГО РЕГИСТРА в нижний, за исключением первого слова и слов после точек, где в нижний регистр не должны переводиться первые символы
очень похоже на простое изменение case
Код: Selection.WholeStory
Selection.Range.Case = wdTitleSentence
Автор: zolivan
Дата сообщения: 03.12.2008 19:11
dneprcomp, спасибо,
имено это мне и нужно было.
Скачал четыре книжки, а там, такого не написано(( и справка на английском местами не понять.
Может подскажешь где взять лит-ру поподробнее и справу на русском - весь день копался в нете не нашел.
Автор: dneprcomp
Дата сообщения: 03.12.2008 22:31
zolivan
Спроси в Компьютерные (IT) книги на РУССКОМ языке или Компьютерные (IT) книги на АНГЛИЙСКОМ
А вообще-то основное - help. И, как по мне, то лучше на английском. Если уж совсем не понимаешь, то записываешь макрос и смотришь, как они этo сделали.
Автор: CergeyNikol
Дата сообщения: 04.12.2008 01:28
Возникла у меня такая проблема
есть куча вордовских файлов
в некоторых из них есть одинаковые абзацы
Существует ли макрос позволяющий объеденить файлы в один удалив ( или выделив)
повторяющиеся абзацы
Буду благодарен за помощь
Автор: Buuo
Дата сообщения: 04.12.2008 23:04
Уважаемые знатоки!
Я хочу создать словарь Лингво. Скачал архив с макросом Назара Кравцива, который должен выдавать текст с DSL-тегами, но он не работает. Чего-то ему не хватает, а чего понять не могу. Сейчас пытаюсь создать свой простейший макрос, который будет "дописывать" теги для слов, выделенных жирным. Ниже привожу фрагмент кода, который я написал, но программа выдаёт ошибку, когда я пытаюсь её запустить. Говорит, что для .Remplacement не определён метод. Не понимаю почему.
Может, поможет кто разобраться? Заранее спасибо.

Sub Проба_жирный_текст ()
Selection.WholeStory
With ActiveDocument.Range
    If Selection.Range.Bold = True Then
        .Text = ""
        .Remplacement.Text = "^&"
        .Execute Format:=True, Replace:=wdReplaceAll
     Else
        MsgBox "Не нахожу текста, выделенного жирным"
    End If
End With


Добавлено:
Почему-то изменяет при отправке эту строку: .Remplacement.Text = "^&". Там в квадратных скобках идёт сначала "b", потом "^&"a в конце также в квадратных скобках "/b".
Автор: hirurg123
Дата сообщения: 08.12.2008 00:11
Нужно в с помощью макроса в Word 2007 создать гистограмму и задать для нее даные. Каким образом получить доступ к открывшейся таблице Excel? Заранее спасибо.
Автор: baston
Дата сообщения: 08.12.2008 11:34
Buuo, так наверное надо в поиске это делать, а не просто в диапазоне. Попробуйте изменить оператор на With ActiveDocument.Range.Find
Автор: pharmakis
Дата сообщения: 11.12.2008 04:42
Доброго времени суток!

Господа эксперты, не подскажите как удалить из документа определенный тип таблиц, но с разными значениями внутри? Например таблицы: 2 строки и 6 столбцов, внутреннее содержание разное. При этом конечно надо все другие не трогать

ЗЫ: с предsдущей проблемой (копирование по закладкам) разобралась радикально: сделала на делфи..
Автор: Ice_Cherry
Дата сообщения: 12.12.2008 20:21
Здравствуйте!! Помогите пожалуйста решить задачу: надо написать программу, которая будет выделять/снимать в тексте все буквы "а" красным цветом.
Автор: MIHMIH007
Дата сообщения: 19.12.2008 11:29
Ice_Cherry
Используй AkelPad с плагином на выделение ))
Автор: polk90
Дата сообщения: 19.12.2008 12:18
Ice_Cherry
это обычной вордовской автозаменой делается. Ctrl+H, в найти ставишь букву а, в заменить на ставишь букву а, потом нажми Больше и внизу Формат->Шрифт->Цвет текста
Автор: PLAG
Дата сообщения: 19.12.2008 12:32
Ice_Cherry
Запиши макрос по тому принципу, который посоветовал polk90. Там сразу
тебе прогу сделает)
Автор: Ice_Cherry
Дата сообщения: 20.12.2008 20:23
Спасибо всем кто ответил!!!
Автор: Gena1971
Дата сообщения: 25.12.2008 12:53
Есть такая задача. Надо поменять формат таблиц в документе. Составил программку простейшую. Таблиц очень много и ручную это делать довольно долго. Тем более эту работу приходится делать периодически постоянно.

Цитата:

ActiveDocument.Styles("Сетка таблицы").Table.Alignment = wdAlignRowCenter
For Each baran In ActiveDocument.Tables
baran.Style = ActiveDocument.Styles("Сетка таблицы")
baran.PreferredWidthType = wdPreferredWidthPercent
baran.PreferredWidth = 100
baran.Rows.AllowBreakAcrossPages = False
baran.Rows.Height = MillimetersToPoints(0)
baran.Rows.HeightRule = wdRowHeightAuto
Next baran

Все очень просто, если бы все работало правильно.
Но после выполнения макроса все внутренние объединения ячеек в таблицах разрываются. Т.е. количество работы увеличивается в разы. Происходит начиная с 4-й строки. Но самое интересное, это то, что таблицы все эти получены из finereader. И в тех таблицах, где объединения ячеек сделаны в самом ворде такого не происходит.
Параметры таблиц вроде одинаковые на вид. Я отлисие не смог найти.
Отсюда вопрос - где тут собака порылась, и как это поправить.
Вариантов перепробовал кучу. Но первое выполнение 4-й строки на таблице из finereader приводит к разбиванию связанных ячеек.
Автор: Troitsky
Дата сообщения: 27.12.2008 19:07
pharmakis

Цитата:
как удалить из документа определенный тип таблиц, но с разными значениями внутри? Например таблицы: 2 строки и 6 столбцов


Код: For Each tbl In ActiveDocument.Tables
If tbl.Columns.Count = 6 And tbl.Rows.Count = 2 Then
tbl.Delete
End If
Next

Страницы: 1234567891011121314151617181920212223242526

Предыдущая тема: Кластеризация изображений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.