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

» Word VBA

Автор: FreemanRU
Дата сообщения: 19.04.2006 18:11
Можно ли как-то сделать так, чтобы при открытии документа если есть текст со шрифтом Time New Roman он заменялся на Arial?
Автор: Mbus
Дата сообщения: 20.04.2006 13:00
Troitsky
Чесно я эти варианты не проверила, потомучто по другому сделала, что-то типа твоего каскада и получилось. Одним словом прибегла к использованию формы с возможностью выбора, а не подменю.
Автор: ustas25
Дата сообщения: 03.05.2006 15:18
возникла следующая проблемка:
приходит файлик с програмой передач. ночной повтор выделен красным. его нужно скопировать в конец страницы. может кто подкажеткак определить начало и конец блока с измененым цветом чтобы его вирезать и вставить в другое место документа
Автор: BigJB
Дата сообщения: 13.05.2006 03:40
Существует следующая задача:
есть файл .doc содержащий тест . необходимо в нем произвести поиск и замену групп цифр на слова. Есть таблица в Excele которая содержит искомые группы цифр и слова на которые необходимо произвести замену.

Я себе представляю решение задачи последовательным перебором искомых значений из таблицы. Но вот не представляю как это реализовать в жизнь.

Видимо задача элементарная. Но у меня к сожалению отсутствует опыт для ее решения.

Подскажите плз решение. Зарание благодарен.
Автор: vane4ik
Дата сообщения: 16.05.2006 13:53
Люди помогите. Не могу решить следующую задачу:
1) Имеется доковский файл в котором написаны различние методички, книги и т.д.
2)Также имеется документ эксель в котором эти методички и книги перечисляются, например: "Работа с Word" Пупкин Г.Г., Петров К.К.
3)При написании новой методички мне нужно например ссылатся на другие методички и книги ( из пункта 1) ).Необходимо создать макрос который будет выводить форму,на которой я буду выбирать необходимые методички и книги и затем при нажатии на кнопку на форме выбранные мной методички будут добавляться в документ в виде ссылок на методички в докомском файле из 1)

Что-то наподобии перекрестных ссылок
Автор: Troitsky
Дата сообщения: 17.05.2006 11:40
BigJB
Основные идеи тут
Если что не ясно - спрашивай.
Автор: BigJB
Дата сообщения: 18.05.2006 22:56
Troitsky
Спасибо!
Довольно доходчиво и понятно. По пробую переделать под свою специфику. Думаю что все получится, но если что, то еще чуть чуть по мучаю
Автор: BigJB
Дата сообщения: 25.05.2006 18:35
Troitsky
Спасибо применил, все работает. добавил цыкл, все супер.
Появился новый вопрос как сделать так, чтобы заменяемый текст имел отличное от основного текста форматирование, цвет, шрифт, размер.

По пробовал проделать при помощи Поиск и замена. Записал макрос, а в нем ни фига ни каких параметров не отражается.

Что делать или где прочитать?

Заранее благодарен
Автор: TashaA
Дата сообщения: 30.05.2006 11:19
Как сделать привязку ListBox к текстовому курсору?

Добавлено:
Как программно установить горячие клавиши,при нажатии на которые совершалось бы какое-н. действие?
Автор: MrZeRo
Дата сообщения: 30.05.2006 14:45
BigJB
Делать в цикле замену с wdReplaceOne и в момент, пока заменяемый текст выделен, менять шрифт, цвет и т.д.
Автор: KiRyX
Дата сообщения: 22.06.2006 12:07
Как макросом все формулы и числа в большом документе MS Word заменить вот так:
PV=(m/M)RT [обычный текст] -> PV=(m/M)RT [объект Microsoft Equation 3.0]

Признак формулы - знаки арифметических действий и только латинские символы и цифры.
Автор: Ivan33
Дата сообщения: 13.07.2006 15:54
граждане, у кого есть опыт решения такой проблемы.

в ворде есть вложенные таблицы эксель, как их вытащить в эксель обратно в одну книгу на разные листы?

Добавлено:
есть кусок кода:

Private lngI As Long

Public Sub FromWordToExcel()
Dim sh As Word.InlineShape
Dim xlApp As Excel.Application
Dim xlWb As Excel.Workbook
Dim xlWbNew As Excel.Workbook
Dim xlWs As Excel.Worksheet
Dim strCaption As String

Set xlApp = New Excel.Application
xlApp.Visible = True

Set xlWbNew = xlApp.Workbooks.Add

For Each sh In ActiveDocument.InlineShapes
If sh.OLEFormat.ProgID = "Excel.Sheet.8" Then
sh.OLEFormat.ActivateAs ClassType:="Excel.Sheet.8"
sh.OLEFormat.Activate

Set xlWb = sh.OLEFormat.Object

strCaption = fnFindField(lngI)

Set xlWs = xlWbNew.Worksheets.Add

xlWs.Name = strCaption
xlWb.Worksheets(1).UsedRange.Copy xlWs.Range("A1")

lngI = lngI + 1
End If
Next sh
End Sub

Public Function fnFindField(lngI As Long) As String
Dim intPos As Integer
Dim fld As Word.Field

Do
lngI = lngI + 1
intPos = InStr(ActiveDocument.Fields(lngI).Code, "SEQ")
Loop Until intPos > 0

Set fld = ActiveDocument.Fields(lngI)

fnFindField = Mid(Trim(fld.Code), 4, _
Len(Trim(fld.Code)) - InStr(Trim(fld.Code), "\") - 4) & " " & fld.Result
End Function

Выдает ошибку в строке:

If sh.OLEFormat.ProgID = "Excel.Sheet.8" Then и

xlWb.Worksheets(1).UsedRange.Copy xlWs.Range("A1")

в документе лежит много таких вложенных таблиц, вылетает на 8 таблице





Добавлено:
есть идеи?
Автор: Kudryashov_Dmitriy
Дата сообщения: 17.07.2006 17:30
собственно такая проблема:

имеется XML-документ Word2003, доступный собственно из word (т.е. не с диска, а через объектную модель ворда). Хочется получить полное деревое XMLины, однако ворд, насколько я понимаю, обрабатывает всё что относится к присоединённой схеме отдельно. Т.е. я имею доступ только к нодам из моего пространства имён. Как жа получить из остальных пространиств имен (w, o, ...), которые определяют в т.ч. оформление текста и т.д.

(http://forum.ru-board.com/topic.cgi?forum=33&topic=7091)
Автор: Archimed
Дата сообщения: 20.07.2006 21:21
Знатоки помогите решить проблему. Необходимо в открытом документе Word снизу на последнем листе программно создать две кнопки "Назад" и "Далее". После заполнения документа из макроса, нужно вернуться назад и исправить исходные данные, если есть ошибки, или продолжить далее.
Автор: legven
Дата сообщения: 23.07.2006 22:32
Я может быть ошибся с топиком, но мне кажется, что это наиболее близкая тема. Суть вопроса: очень хочется сделать скроллинг OLE-объкта(в моем случае это word) на форме в Access. Без скроллинга делать умею, но нужен именно скроллинг! Очень нужно и как можно стрее
Заранее благодарен.
Автор: RedPromo
Дата сообщения: 25.07.2006 10:03
Archimed
Ну я бы создал свою панель через VBA и наней две кнопки с процедурами а вних код.
А что значит назад это отменить все изминения все сделаные макросом или разрешить просто пользователю править данные?


Цитата:

Dim customBar As CommandBar
Dim newButton As CommandBarButton
Set customBar = CommandBars.Add("Custom")
Set newButton = customBar.Controls _
.Add(msoControlButton, CommandBars("Edit") _
.Controls("Cut").Id)
Set newButton = customBar.Controls _
.Add(msoControlButton, CommandBars("Edit") _
.Controls("Copy").Id)
Set newButton = customBar.Controls _
.Add(msoControlButton, CommandBars("Edit") _
.Controls("Paste").Id)
customBar.Visible = True

Автор: julliette
Дата сообщения: 30.07.2006 10:04
Помогите пожалуйста!
Суть проблемы: в файл с текстом вставляются картинки, распознанные в файнридере и перенесенные в другой вордовский файл. По умолчанию они вставляются с левого края положение "в тексте" расстояние до текста слева-справа 0,32. Нужно положение "сверху и снизу" выравнивание центр расстояние до текста слева-справа 0.
Хочу создать макрос, который при нажатии горячих клавиш автоматически вставляет объект с нужным форматирование или же применяет сразу нужное форматирование к только что вставленному объекту. Пробовала через макрорекордер, но в режиме записи не могу даже выделить вставленный объект - мышь не выделяет объект, если начинаю запись при уже выделенном вставленном объекте, то выходя в Формат/Рисунок/Положение - кнопка "Дополнительно" и раздел обтекание неактивны. Причем для ранее вставленных и отформатированных рисунков эти опции активны.
Может кто-то подскажет как обратится из VBA к только что вставленному объекту?
Автор: Archimed
Дата сообщения: 30.07.2006 17:08
RedPromo
Спасибо эту проблему я решил. Сейчас возникла другая. Не работает команда MkDir "D:Dokum". Папка не создается. Пробовал и в 2000 офисе и 2003. Может виноват Windows XP SP2, потому что на работе в Win2000 и офисе 2000 все прекрасно создается. Прошу, ради эксперимента, у кого ХР и SP2 попробовать и сообщить результат. Если сработает выложите код сюда, я у себя опробую. Я уже грешу на все. Может какая библиотека не подключена для работы с NTFS XP?
Вопрос снят. На одном из форумов нашел. что это проделки антивируса Касперского. Снял его защиту и все сработало. Только вот как теперь этого гада обойти?
Автор: julliette
Дата сообщения: 30.07.2006 17:41
Проблема решена, если кому-то интересно могу выложить код
Автор: Archimed
Дата сообщения: 11.08.2006 06:55
Подскажите, как из Worda получить доступ к файлу Exel и забрать содержимое нужных ячеек. Заранее спасибо.
Автор: RedPromo
Дата сообщения: 11.08.2006 12:26
Archimed
А вто так

Цитата:

Dim xlApp As Excel.Application
Dim xlSheet As Excel.WorkSheet
Dim xlRange AS Exel.Range

Set xlApp = CreateObject("Excel.Application")
xlApp.Worbooks.Open('C:\FileExel.xls')
xlSheet = xlApp.WorkSheets('Лист1')
xlRange = xlSheet.UsedRange


For r=1 To xlRange.Rows.Count Do
For c=1 To xlRange.columns.Count Do

xlRange.Cells(r,c).Value


и т.д. в зависимости от поставленой задачи
Автор: Archimed
Дата сообщения: 12.08.2006 14:48
RedPromo
Спасибо за ответ. Но...

Цитата:
xlSheet = xlApp.WorkSheets('Лист1')

На этой строке выдает ошибку (Object variable or With block variable not set (Error 91)).
В чем может быть причина? Не подключены какие-то библиотеки.


Цитата:
For r=1 To xlRange.Rows.Count Do
For c=1 To xlRange.columns.Count Do

в этих строках тоже какая-то ошибка.
Если не трудно прогони код на компе, а то у тебя есть ошибки по тексту.
Цитата:
Dim xlRange AS Exel.Range

EXEL и ' вместо ".
Автор: Yuk
Дата сообщения: 12.08.2006 17:42
Archimed
Set xlSheet = xlApp.WorkSheets("Лист1")
Set xlRange = xlSheet.UsedRange

В For цикле Do не надо.
Автор: RedPromo
Дата сообщения: 12.08.2006 19:02
Archimed
Да немного есть ошибок приношу извиннеия прост я писал с ходу
да иногда неуспеваеш переключится на с одного языка на другой
Автор: mrdime
Дата сообщения: 22.08.2006 20:54
Господа, такой вопрос:

Все таблички в документе необходимо отформатить по одному образцу. Все бы хорошо, но надо, чтобы все ячейки в первой строке каждой таблицы форматировались по-горизонтали по-центру. На следующий код получаю ошибку, что таблица содержит объединенные ячейки, поэтому опреация невозможна. Но, обьединенные ячейки находятся не в первой строке, в некоторых таблицах таких вообще нет. Как обойти эти грабли? Кроме того, если делать это "ручками" в Excel никакие объединения не мешают форматить ячейки как угодно.
Вот код:

Sub TableEdit ()

Dim oTable As Table

For Each oTable in ActiveDocument.Tables
oTable.Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next oTable

End Sub
Автор: mrdime
Дата сообщения: 02.09.2006 18:56
Что-то не работает эта ветка форума...
Разобрался сам. Если кого интересует - пишите - отвечу. Но суть в том, что ряды в Ворде не поддерживают свойство .ParagraphFormat.Alignment. Зато поддерживают ячейки. Через них я это и сделал: отформатил все ячейки с идексом 1.

For Each oTable in ActiveDocument.Tables
For I=1 To 3 'у меня по 3 колонки в таблицах
oTable.Columns(I).Cells(1).ParagraphFormat.Alignment = wdAlignParagraphCenter
Next I
Next oTable

Пишу по памяти, мож. где ошибка, но принцип такой.
Автор: mrdime
Дата сообщения: 04.09.2006 12:47
Привет всем,

Как я понял, эта ветка не слишком активна, мягко говоря, но может кто-то идейку подкинет...

Такая проблема. Есть код:

Sub Test()
Dim myTable As Table
Dim oCell As Cell
Dim myRange As Range

Set myTable = ActiveDocument.Tables(1)

Set myRange = ActiveDocument.Range( _
myTable.Cell(3, 1).Range.Start, _
myTable.Cell(4, 1).Range.End)
myRange.Cells.Merge


End Sub

Выдает ошибку:5941:"Запрашиваемый номер семейства не существует."

Если объединять ячейки из любого другого столбца, кроме 1-го, все выполняется без проблем. Но, мне необходимо объеденить несколько ячеек именно в первом столбце таблицы.

Буду благодарен, если кто-то подскажет решение проблемы, или хотя бы ресурс, где об этом можно поподробнее узнать (можно на английском или немецком). Мелкомягкие именно эту проблему в справке по ошибке с таким кодом не описывают.
Автор: Yuk
Дата сообщения: 04.09.2006 20:12
mrdime
Можно так:

Код: ...
myRange.Select
Selection.Cells.Merge
Автор: mrdime
Дата сообщения: 05.09.2006 09:19
Yuk

Ух, Шайтан!
Большое спасибо, не ожидал, что так просто можно решить эту проблему.
Автор: OrlangurStep
Дата сообщения: 12.11.2006 13:52
Как заставить выполнятся макрос при открытии любого дока?

Страницы: 1234567891011121314151617181920212223242526

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


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