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

» Word VBA

Автор: murkovich
Дата сообщения: 26.04.2010 21:34
Crazyblind

Цитата:
заполняю в первом файле название организации и надо, чтобы во втором файле в тексте, в НУЖНОМ мне месте(я знаю где оно визуально, но не знаю как поймать программно) вписывалось название организации из первого файла.

Вроде букмарки должны Тебе помочь - поставь букмарк на место вставки, которое визуально знаешь, и потом программно вставляй в это место.
Автор: Crazyblind
Дата сообщения: 27.04.2010 13:50
Как запоминать информацию из первого файла я нашел. У меня там таблица из 2 столбцов, думал сначала тупо текстбоксы делать, потом нашел как из таблицы данные брать. А вот что такое букмарки - не знаю . Подскажите пожалуйста где взять литературу со всеми операторами в ВБА. Есть возможность просто определенный текст заменять во втором файле, но переменная строковая выдерживает ведь только до 255 символов(?), а там текст на 7 страниц, надо в разных местах вставлять данные.
Автор: JekaKot
Дата сообщения: 27.04.2010 20:08
Подскажите, пожалуйста, макрос (или программку) для быстрой замены текста в нескольких файлах и в названиях самих файлов (часто меняется маркировка выпускаемой документации, изменение одной буквы/цифры влечет за собой правки текста в куче файлов)
И если в TotalCommander-е можно изменить наименования через "групповое переименование", то с текстами - финиш полный...
Автор: shengjeng
Дата сообщения: 27.04.2010 21:24
JekaKot

Посмотрите на wordexpert.ru
замена
http://wordexpert.ru/page/makros-paketnoj-zameny-ot-aleksandra-vitera
http://wordexpert.ru/page/poisk-i-zamena-teksta-makrosy-ot-marka-rozenberga
Автор: JekaKot
Дата сообщения: 27.04.2010 23:24
shengjeng
Благодарю, завтра опробую "в боевых условиях".

А есть что-нибудь для проверки наличия кириллицы в названиях файлов и ее замены на латиницу?
Автор: murkovich
Дата сообщения: 28.04.2010 01:42
Crazyblind

Цитата:
А вот что такое букмарки - не знаю . Подскажите пожалуйста где взять литературу со всеми операторами в ВБА


Букмарк - это типа метки в документе/шаблоне. Создавать можно через меню, а вставлять текст после букмарка можно, например, так:
ActiveDocument.Bookmarks("имя букмарка").Range.InsertAfter "вставляемый текст"

Погугли по "word bookmark vba"
Автор: Crazyblind
Дата сообщения: 29.04.2010 13:28


Цитата:
Букмарк - это типа метки в документе/шаблоне. Создавать можно через меню, а вставлять текст после букмарка можно, например, так:
ActiveDocument.Bookmarks("имя букмарка").Range.InsertAfter "вставляемый текст"

Погугли по "word bookmark vba"


Спасибо огромное, очень помогли букмарки(закладки)!

Появилось еще 2 вопроса:

1)как сделать нужный документ активным
2)когда я вставляю за букмаркой текст из ячейки таблицы, после текста ставится энтер(похоже он берется от незаполненного места в ячейке), не знаю как от него избавиться. Пробовал через mid и trim, не помогает.
Автор: Crazyblind
Дата сообщения: 30.04.2010 07:24
Mid все же помог, но в длине пришлось указать не len(name$)-1, а len(name$)-2



Добавлено:
Каким образом можно закрыть один документ, не закрывая другой?

И существуют ли открытые коды, которые могут ФИО человека из именительного падежа кинуть в родительный?(Я так понимаю это очень сложно, т.к. некоторые фамилии даже не склоняются)
Автор: Crazyblind
Дата сообщения: 07.05.2010 06:13
Осталось узнать как из html странички вытащить нужный мне текст ?
Автор: dneprcomp
Дата сообщения: 08.05.2010 00:36
Crazyblind

Цитата:
но в длине пришлось указать не len(name$)-1, а len(name$)-2

Потому что перевод строки это на самом деле 2 символа, а не один - (Chr(13) + Chr(10))
Автор: Alexey87
Дата сообщения: 09.05.2010 18:31
Здравствуйте уважаемые форумчане!
Подскажите пожалуйста как должен выглядеть код макроса, который сможет реализовать следующее (Word 2003):
1. Поля страницы должны быть изменены на – верхнее (2 см), левое (2,5 см), правое (1 см), нижнее (6 см).
2. На данную страницы вставляется автотекст.
Автотекст представляет собой рамку для листов формата А4 (ГОСТ 2.104, форма 1). Данный автотекст, по моему соображению, должен быть вставлен в колонтитул, т.к. при заполнении одного листа данными, они должны быть продлены на последующих с тем же оформлением.
3. При вставке автотекста должна быть автоматически вставлена пустая страница.
Автор: Crazyblind
Дата сообщения: 13.05.2010 09:28
Взял из html файла все, что нужно, всем спасибо, все работает.

Хотелось бы узнать маленький нюанс как открывать файл из папки, которая непостоянна, но лежит второй файл вместе с первым в одной папке.

Я использовал Documents.open filename=".\имя файла"

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

Можно ли какую-то папку сделать активной(имя папки меняется), или как-то можно указать в ЭТУ же папку и далее название открываемого файла?
Автор: murkovich
Дата сообщения: 13.05.2010 16:58
Crazyblind

Цитата:
Можно ли какую-то папку сделать активной(имя папки меняется), или как-то можно указать в ЭТУ же папку и далее название открываемого файла?


Установить текущую папку Тебе поможет API-функция SetCurrentDirectory (и соотв. GetCurrentDirectory, чтобы узнать ее).
Автор: Crazyblind
Дата сообщения: 17.05.2010 10:07
Не смог разобраться с этими двумя API-функциями, вроде и код на VB нашел, но ничего не получается

Можно ли еще окрыть эксель файл через ворд для изменений?

Dim kont as excel.workbook

Set kont = getobject("С:\Контакты.xls")

Не получается

Начинает ругаться на объявление, хотя в книжках говорят такой код должен подходить, может из-за того что я пишу в Модуле, а не в ThisDocument?
Автор: Alexey87
Дата сообщения: 17.05.2010 15:11
Если есть у кого-то возможность подскажите пожалуйста по моему вопросу. Нужно решить в кратчайшие сроки.
Автор: Hugo121
Дата сообщения: 18.05.2010 15:36
Crazyblind

Цитата:
Dim kont as excel.workbook

Set kont = getobject("С:\Контакты.xls")


Подключите в референсах библиотеку Экселя, и заработает.

Alexey87, тут я пас...

Автор: Crazyblind
Дата сообщения: 18.05.2010 20:54
Hugo121

Благодарю. Завтра проверю, отпишусь.
Автор: Crazyblind
Дата сообщения: 19.05.2010 16:10
Hugo121

Еще раз спасибо, помогло
Автор: zzzoommm
Дата сообщения: 20.05.2010 08:30
доброго времяни суток. подскажите пожалуйста. в институте задали написать макрос в MS word позволяющий выделенный текст делать курсивом, жирным и подчеркнутым, в зависимости от введенной буквы (К,Ч,Ж). тоесть я так понял надо создать форму в котроую вводишь текст и при нажатии кнопки происходит изменение этих букв. буду благодарен за помощь.
Автор: BagaBaga
Дата сообщения: 04.06.2010 18:04
Можно ли в ворде сделать такое:

в одной папке лежат файлы ворд (doc, не docx)
каждому файлу (точнее, для каждого файла в папке автоматически - не открывая каждый файл вручную) заменить свойства/метаинформацию документа: автора, организацию, база гиперссылки
Автор: vaulin
Дата сообщения: 02.07.2010 10:24
Никто не подскажет, как вернуть каретку на один символ назад?

Добавлено:
А, всё, разобрался. Это делается с помощью Selection.Move(Unit:=wdCharacter, Count:=-1):

Код: wUnits = Selection.Move(Unit:=wdCharacter, Count:=-1)
Автор: suomifinland
Дата сообщения: 03.10.2010 09:13
Ребята, Вы как то меня здорово выручили , можно еще раз попросить Вас о помощи... Имеется папка, в ней около 100 файлов с расширением *.doc и *.rtf, но больше в *.doc, так вот моя проблема, каким образом ОДНОВРЕМЕННО удалить одну и туже фразу, к примеру "внеклассная работа в школе" или какую либо другую "..............." фразы естественно без кавычек, я так понимаю что необходим макрос..., но я сплошная неуч, в этом вопросе... Помоги коллективный РАЗУМ!
Автор: JekaKot
Дата сообщения: 03.10.2010 10:37
suomifinland
Попробуй это
Там, правда, поиск и замена, но что помешает также и слова удалять... Если что, могу залить, что осталось у меня...
Автор: suomifinland
Дата сообщения: 03.10.2010 10:51
У меня на ноутбуке Word 2007, а на домашнем Word 2010, но могу пользоваться на работе и 2003, а макрос к ним, подойдет, Уважаемый JekaKot ??? Начала качать, у меня огран. интернет, очень медленный...
Автор: JekaKot
Дата сообщения: 03.10.2010 14:23
VBA, насколько я себе представляю, практически одинаковый для 2003/2007/2010 - не должно быть проблем...
Знаю точно - на 2007 проблем нет (сам пользуюсь иногда на работе)
Чтобы не мучилась - вот все, что есть у меня - Офис.rar
Автор: Zloy_Gelud
Дата сообщения: 06.10.2010 14:08
Как осуществить переход курсора на следующий лист в документе? Например, печатается часть текста на одном листе, затем необходимо напечатать другую часть на следующем листе. Как сделать этот переход?
Автор: smirnvlad
Дата сообщения: 06.10.2010 15:57
Zloy_Gelud
вставить разрыв страницы

Код: Selection.InsertBreak Type:=wdPageBreak
Автор: Zloy_Gelud
Дата сообщения: 06.10.2010 16:59
smirnvlad
Некорректно работает почему-то:

Код: ActiveDocument.Content.InsertAfter("wredfrrdst")
ActiveDocument.Content.InsertAfter("wredfrrdst")
ActiveDocument.Content.InsertBreak(7)
ActiveDocument.Content.InsertAfter("fswsd")
ActiveDocument.Content.InsertBreak(7)
ActiveDocument.Content.InsertAfter("wredfrrdst")
ActiveDocument.Content.InsertBreak(7)
Автор: smirnvlad
Дата сообщения: 06.10.2010 18:00
Zloy_Gelud

Код: [no]
Set myRange = ActiveDocument.Content
myRange.InsertAfter ("wredfrrdst")
myRange.InsertAfter ("wredfrrdst")
myRange.Collapse Direction:=wdCollapseEnd
myRange.InsertBreak (wdPageBreak)
myRange.InsertAfter ("fswsd")
myRange.Collapse Direction:=wdCollapseEnd
myRange.InsertBreak (wdPageBreak)
myRange.InsertAfter ("wredfrrdst")
myRange.Collapse Direction:=wdCollapseEnd
myRange.InsertBreak (wdPageBreak)
[/no]
Автор: Zloy_Gelud
Дата сообщения: 06.10.2010 19:28
smirnvlad -- это работает. Спасибо.

Страницы: 1234567891011121314151617181920212223242526

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


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