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

» Word VBA

Автор: popkov
Дата сообщения: 15.10.2007 15:03
Troitsky

Цитата:
Однако, не стоит обольщаться. Как я уже говорил, функциональность надстроек, идущих в комплекте с какими либо программами, сводится только к использованию функций этих программ, сокрытых обычно в динамических библиотеках (dll)
Примерами тому - надстройки от Lingvo, FineReader, ВААЛ и т.д.

С другой стороны, в некоторых случаях можно заменить вызов функции из внешней библиотеки на собственный VBA-код. Я, например, написал уже макрос удаления кодов полей EndNote, работающий гораздо лучше, чем функция Remove Field Codes самого EndNote. Правда, смысла встраивать его в надстройку особого не вижу. Проще его оставить в виде макроса.

Интересно, а ведь функции, спрятанные в dll - тоже, вероятно, написаны на VB? Может, их как-то можно превратить в исходный код?
Автор: Troitsky
Дата сообщения: 15.10.2007 20:43
popkov

Цитата:
Интересно, а ведь функции, спрятанные в dll - тоже, вероятно, написаны на VB?

Функции используют объектную модель VBA (Word VBA). А вот написана ли библиотека на VB?.. Оооочень сомневаюсь. Тут, к примеру, PEiD тебе в помощь.

Цитата:
Может, их как-то можно превратить в исходный код?
Вопрос больше для Андеграунда.
Автор: RedPromo
Дата сообщения: 15.10.2007 23:27
popkov
Да не одним VBА живут DLL, а превратить в исходники да еще работающее достаточно тяжело, для каждого языка на котором написан dll есть свои программы.
Автор: baston
Дата сообщения: 09.11.2007 12:33
julliette
Выложи пожалуйста код по обтеканию рисунка текстом.Спасибо.
Автор: 32sasha
Дата сообщения: 21.11.2007 16:41
1, Есть word с таблицей, таблица не стабильная (некоторые ячейки объединены)
Как устроить цикл, чтобы не нарываться на несуществующие ячейки?

2. B таблице есть автоматическая нумерация строк.
Забираю информацию с ячейки только набранный текст и со знаками табуляции.
Как мне получить нумерацию строк + текст и без знаков табуляции?
strText1 = Selection.Tables(1).Cell(a, 1).Range.Text
Автор: shamman
Дата сообщения: 25.11.2007 00:38
Мое почтение господа!
Пишется софтинка для пакетной обработки файлов. Есть форма с ComboBox-ом, в котором юзер должен выбрать нужный макрос.
Подскажите, пожалуйста, как получить этот самый список макросов, например, с Normal.dot?
Автор: AndVGri
Дата сообщения: 25.11.2007 04:59
shamman
Ну вот Вам для начала, а дальше уж самостоятельно:

Код:
Public Sub NormalCodeModules()
Dim pVB As VBIDE.VBProject
Dim i As Long

For i = 1 To Application.VBE.VBProjects.Count
If Application.VBE.VBProjects(i).Name = "Normal" Then
Set pVB = Application.VBE.VBProjects(i)
Exit For
End If
Next i
If Not (pVB Is Nothing) Then
For i = 1 To pVB.VBComponents.Count
Debug.Print pVB.VBComponents(i).Name
Next i
End If
End Sub
Автор: shamman
Дата сообщения: 25.11.2007 16:35
AndVGri
Спасибо! Собственно говоря – это и все, что мне было нужно.
Автор: TVeresk
Дата сообщения: 27.11.2007 11:19
Добрый день, подскажите, пожалуйста, как сделать, чтобы нижеследующий код начинал работать при загрузке нового документа, созданного на основе шаблона - меня интересует ComboBox, который, почему-то не сохраняет введенные значения после открытия заного файла. И еще, как установить какое-то значение ComboBox по умолчанию? Спасибо!

Код:
Private Sub ComboBox1_Change()
With ComboBox1 'this loads the combo
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
End With
End Sub
Автор: TVeresk
Дата сообщения: 29.11.2007 15:25
Наверное, я не совсем понятно описала свою проблему, попробую пояснить подробнее.
Я создала свой шаблон в Word с использованием Control Toolbox. И в этот шаблон я вставила элемент ComboBox, но его необходимо заполнить элементами, а как это сделать я толком не знаю . При двойном щелчке на ComboBox я попадаю в Visual Basic и здесь вписала код, представленный выше (нашла в инете). Сохранилась. Проблема в том, что при нажатии на этот шаблон должен открываться новый документ, созданный на его основе, но в открывшемся документе нет списка: сам элемент ComboBox есть, а списка нет, то есть он почему-то не сохраняется в шаблоне. В инете, к сожалению, не нашла ничего. Буду очень признательна за помощь. Спасибо!
Автор: popkov
Дата сообщения: 06.12.2007 16:38
Подскажите, как после выполнения операции Замены получить статистику (количество замен)?

Цитата:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " -([0-9])"
.Replacement.Text = " " & ChrW(8722) & "\1"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Автор: kirik1986
Дата сообщения: 09.12.2007 13:50
Добрый день, подскажите, пожалуйста, как сделать, макрос, чтобы в выделенной области он менял цвет всех заглавных букв текста на красный, а строчных на черный?
Автор: popkov
Дата сообщения: 09.12.2007 14:32

Цитата:
Добрый день, подскажите, пожалуйста, как сделать, макрос, чтобы в выделенной области он менял цвет всех заглавных букв текста на красный, а строчных на черный?

Используй функцию "Замена" в Word. Включи опцию "Подстановочные знаки".

В поле "Найти:" набери:
Цитата:
[А-ЯA-Z]

Поле "Заменить на:" можешь оставить пустым, помести туда курсор, в меню Формат окна "Замена" выбери Шрифт, и там укажи Красный цвет текста.

Далее можешь записать макрос. Вот что у меня получилось после доработки:
Цитата:
Sub Макрос()
' Макрос записан 09.12.2007 admin
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorRed
With Selection.Find
.Text = "([А-ЯA-Z])"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Единственная трудность - этот макрос будет выполнять замену по всему документу, а не только в пределах данного выделения. Как изменить, не знаю. Для строчных букв всё аналогично.
Автор: baston
Дата сообщения: 09.12.2007 18:58

Цитата:
Добрый день, подскажите, пожалуйста, как сделать, макрос, чтобы в выделенной области он менял цвет всех заглавных букв текста на красный, а строчных на черный?

Попробуйте вот такой макрос:

Код: Sub colorCase()
'изменение цвета первых букв предложений в выделенном тексте
Dim fChar As Range
Dim selText As Range
Set selText = Selection.Range
If Selection.Type = wdSelectionIP Then
MsgBox "Не выделен текст"
Else
For Each fChar In selText.Sentences
fChar.Characters.First.Font.Color = wdColorRed
Next fChar
End If
End Sub
Автор: kolinich
Дата сообщения: 12.12.2007 13:06
подскажите пожалуйста как зациклить (чтоб во всем документе или в пределах выделения) нашло м3 и исправило на м3 - 3 верхний индекс
Sub Макрос1()

Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.ClearFormatting
With Selection.Find
.Text = "м3"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.TypeText Text:="м"
Selection.Font.Superscript = wdToggle
Selection.TypeText Text:="3"
Selection.Find.ClearFormatting
With Selection.Find
.Text = "м3"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
End Sub
получается примерно такого содержания но единично ищет каждый раз приходится жать на кнопку.
Автор: Chim701
Дата сообщения: 20.12.2007 14:42
Кто знает - подскажите пожалуйста неопытному.. Мне нужно что бы файл отправлялся через электронную почту по нужному адресу взятому из адресной книге оутлук-экспресса. Единственное чего мне удалось добиться это появления окна "отправить" с пристегнутым нужным файлом:

ActiveDocument.SendMail

но при этом приходится ручками выбирать нужный адрес и ручками жать кнопку отправить. А можно все это автоматизировать с помощью VBA? Кто знает - подскажите пожалуйста неопытному..
Автор: zoric
Дата сообщения: 20.12.2007 16:12
Как реализовать следующую функциональность?

Набираем текст документа.
Понадобилось вставить название некого объекта. С помощью макроса вызываю список объектов (сохранённый предварительно в файле, а ещё лучше – в базе данных), выбираю необходимый.
При закрытии документа (AutoClose) – в начале документа генерируется список упомянутых в тексте объектов, с дополнительными параметрами, взятыми из того же списка объектов (количество, вес, цвет и т.п.)
Или может подобные задачи надо не в Word-е делать?
Автор: AFT
Дата сообщения: 25.12.2007 17:10
Docword.SaveAs

как сделать, чтоб по кнопке открывалось диалоговое окно и запрашивало путь для сохранения и имя файла?
Автор: Anatolij2005
Дата сообщения: 26.12.2007 12:33
Люди помогите написать макрос в VBA, что бы из таблицы которые содержат два столбца со старым и новым значением находило старое значение и заменяло на новое(в текстовом документе). Некоторые значения старые могут не встречаться в тексте вообще.Написать макрос просой замены не проблема, а вот как с таблицей????
Автор: CHEMBERCHLEN
Дата сообщения: 14.01.2008 01:50

КТО НИБУДЬ ЗНАЕТ КАК РЕШАЕТСЯ ЭТОТ ПРИМЕР НА VBA:


Удалить все «*» и продублировать каждый символ, отличный от заданной цифры, если она
присутствует в исходной строке.

ЗАРАНЕЕ СПАСИБО

Автор: Andrey32
Дата сообщения: 22.01.2008 00:01
Частотного словаря ни у кого не имеется? Не хочется изобретать велосипед. Под Office 2003.
Автор: oselky
Дата сообщения: 24.01.2008 10:20
Добрый день!
М.б. кто-то уже встречался с подобной задачей, подскажите, пожалуйста, как её можно автоматизировать и достаточно быстро.
Есть 8 файлов, полученных после слияния. Каждый файл содержит по одной странице нового документа, всего в файлах по 200 страниц. Файл 1 содержит первые страницы нового документа, файл 2 содержит вторые и т.д. Требуется из каждого файла перенести по одной странице в новый файл, чтобы получить 200 файлов по 8 страниц в каждом.
Заранее спасибо!

Добавлено:
Спасибо, вопрос снят.
Автор: agro
Дата сообщения: 13.02.2008 23:42
уже разобрался сообщение удалено
Автор: sadmn
Дата сообщения: 16.02.2008 15:14
как сделать так, чтобы определённый код (часть макроса) выполнялся при нажатии клавиши (любой) на клавиатуре?
а.и:

Цитата:
Sub mistakes()

Dim myBar As CommandBar
Dim myControl As CommandBarButton

' Создание панели инструментов
Set myBar = ActiveDocument.CommandBars.Add(Name:="MyNewBar", _
Position:=msoBarTop, Temporary:=True)
With myBar
.Visible = True
.RowIndex = msoBarRowLast
End With
' Создание кнопки
Set myControl = myBar.Controls.Add _
(Type:=msoControlButton, Before:=1)
With myControl
.Caption = "Ошибки"
.FaceId = 16
.Style = msoButtonIconAndCaption
End With
End Sub


Private Sub ???_???()
Dim i As Integer
Dim j As Integer

Select Case KeyAscii
Case 8, 46
i = 0
j = j + 1
Case 32, 13
i = i + 1
End Select

CommandBars("MyNewBar").FindControl(msoControlButton).Caption = CStr(i) + "; " + CStr(j)
End Sub

Автор: say100
Дата сообщения: 11.03.2008 09:41
Всем привет.

Подскажите пожалуйста, как выравнить таблицу в ворде по центру из макроса. Не могу никак найти решение этой пустяковой беды .-(
Автор: vasiliy74
Дата сообщения: 11.03.2008 16:57
ctrl+c ctrl+v не помогает, копирую данные из Word в Excel, в теле каждого такого файла есть две таблицы, вообще фалы типовые так как формируются автоматически, но в таблицах есть цифры и они написаны через точку, а после вставки в excel ещё и пробелы появляются после каждой цифры в ячейке так что просто изменение системной информации типа запятую на точку не помогает да и нужно свойство каждой из такой ячейки поставить цифра.

Помогите с чего начать?? Как правило просто записываешь макрос потом смотришь в него и начинаешь но у меня так не получилось, неверно каким либо образом необходимо найти таблицу и начать по ней шагать.
Автор: Vixerunt
Дата сообщения: 05.04.2008 16:08
друзья! нужна помощь! подскажите, как в заданном тексте удалить часть текста, заключенного в скобки (вместе со скобками)? буду весьма признателен....
Автор: Henge
Дата сообщения: 05.04.2008 16:18
Подскажите как вычислить суммы элементов матрицы, расположенных в строках с четными и столбцах с нечетными номерами, и поместить их соотвественно в одномерные массивы по возрастанию.
Автор: Aer0ZiS
Дата сообщения: 16.04.2008 19:03
В универе на программировании проходим Word VBA... Может кто-нибудь из местных гуру поможет с лабками, а? =) А то никак в сроки не укладываюсь - времени не хватает... =)) Буду очень признателен!

Задание №1:
Преобразовать матрицу путём поэлементного вычитания последнего столбца из всех столбцов кроме последнего и получить сумму всех элементов матрицы. Последний столбец перенести в одномерный массив и посортировать по возрастанию. Напечатать все массивы и сумму элементов с пояснениями.

Задание №2:
Задан массив записей о расписании учебных занятий на неделю. Информация о расписании включает в себя: шифр группы, дни недели, часы занятий, дисциплина, преподаватель, аудитория. Составить расписание на всю неделю. Информацию о расписании поместить в список в ComboBox. Напечатать исходный массив и расписание.

Задание №3:
Создать процедуру для вычисления корней квадратного уравнения. Коэффициенты уравнения заданы массивом и вводятся по запросу программы, а корни - простые переменные. Если будут мнимые корни, им присвоить значения нулей. Использовать процедуру для трёх уравнений. Коэффициенты и корни печатать в основной программе.

P.S. Если в задании указано напечатать, то имеется в виду вывести через Debug.Print в окошко Immediate.
Автор: anetral
Дата сообщения: 21.05.2008 14:07
mrdime


Цитата:
Но остается параметр Spacing, даже принудительное присваивание ему значения "0" не дает возможности от него полностью избавиться. Между линиями остаются небольшие зазоры. Приходится для каждой таблицы руками в Свойствах таблицы - Таблица - Параметры убирать галку с "Интервалы между ячейками". Подскажите как избавиться от этой гадости, как это сделать на VBA?


Я тоже мучался с этой проблемой. Решил её так: установливаю толщину всех границ 0,25 пт. При печати зазоры не видны и толщина границ получается как 0,5 пт., т.е. точно в два раза.

Страницы: 1234567891011121314151617181920212223242526

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


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