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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Visual Basic: Открыть Word документ, и сделать изменения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

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

xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот незадача... Нужно на VB открыть вордовский документ, повставлять слова всякие (в определенные места) а потом его сохранить с определенным именем.
Я на ВБ почти ноль, может кто ткнем носом на ключевые слова, куда смотреть... кажись это через COM делается, так?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 13:31 03-10-2004
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
По-моему уже нет человека, который бы этот совет не слышал:
Меню Сервис/Макрос/Начать запись
Производишь действия, которые надо, останавливаешь запись, смотришь в редакторе, что получилось, анализируешь код, правишь, минимизируешь... и имеешь то, что надо.

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 21:21 04-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Troitsky
я ворд открываю только чтоб шпаргалки написать, про макросы мне не слова
спасибо, пойду посмотрю.
 
Добавлено
а как сделать чтоб в ворде появился мой Form по вызову? не лазить же каждый раз в ВБ и не нажимать play.
 
Добавлено
а может все-таки както можно из наружной программы открыть документ?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 22:24 04-10-2004
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Что-то типа этого:
 

Код:
Dim objWord As Object
 
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Open ("document.doc")
  'Вставляешь всякие слова (в определенные места)
objWord.ActiveDocument.SaveAs ("new_document.doc")
objWord.ActiveDocument.Close
objWord.Quit
 
Set objWord = Nothing


Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 20:52 05-10-2004 | Исправлено: Troitsky, 20:53 05-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Troitsky

Цитата:
'Вставляешь всякие слова (в определенные места)

хех, по логике мыслей, там должно быть такое:

Код:
objWord.Selection.Find.ClearFormatting
    objWord.Selection.Find.Replacement.ClearFormatting
    With objWord.Selection.Find
        .Text = "ABC"
        .Replacement.Text = box_estacion_base.Text
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    objWord.Selection.Find.Execute Replace:=wdReplaceAll

где box_estacion_base это поле с тем, что должно быть вместо ABC. так не работает

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 22:41 05-10-2004
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А ты поставь ссылочку на Microsoft Word 10.0(или другой) Object Library в меню Project/References Я думаю, тогда все заработает.

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 23:44 05-10-2004 | Исправлено: Troitsky, 23:45 05-10-2004
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кстати, если уж ты используешь конструкцию With|End With (что весьма рационально), то используй ее по максимуму:

Код:
 
    With objWord.Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting

        .Text = "ABC"
        .Replacement.Text = box_estacion_base.Text
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
 


Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 10:26 06-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Troitsky
спасибо! работает

Цитата:
Кстати, если уж ты используешь конструкцию With|End With (что весьма рационально), то используй ее по максимуму:  

ну я вообще не вдавался в код, я просто глянул как ворд сделал...
 
Добавлено
и вопрос немного не в тему, как склеивать два стринга?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 18:38 06-10-2004
Troitsky



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

Цитата:
как склеивать два стринга?

 
Пример:

Код:
 
Dim str1, str2, str3 As String
str1 = "ПАР"
str2 = "НИК"
str3 = str1 & str2 ' str3 = "ПАРНИК"
 


Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 18:50 06-10-2004
That_B



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть очень хорошие статьи по этой теме
http://www.vbstreets.ru/VB/Articles/default.aspx
 
Работа с Word. Статья первая
.............
Работа с Word. Статья девятая

Всего записей: 387 | Зарегистр. 09-09-2004 | Отправлено: 19:16 06-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
That_B
тоже спасибо


хм, странно, из одного семпла взял такой диалог открытия файла:

Код:
    Dim sTemplate As String
    With dlgCommonDialog
        .DialogTitle = "Open"
        .CancelError = False
        .Filter = "Word Documents (*.doc)|*.doc"
        .ShowOpen
        If Len(.FileName) = 0 Then
            Exit Sub
        End If
        sTemplate = .FileName
    End With

Не рулит, ругается на выделенную строку. Может тоже какую-то библиотеку нужно подгружать?
Смотрел код того семпла, ничего не нашел что могло бы инициализировать dlgCommonDialog
 
Добавлено
И еще, я по ссылке что дал That_B не нашел как ставится курсор в определенное место. Мне нужно вставить картинку в текст, я делаю так:

Код:
    Selection.InlineShapes.AddPicture FileName:="H:\CYS\florida_u\1a.BMP", _
        LinkToFile:=False, SaveWithDocument:=True

а как мне курсор поставить именно в нужное место?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 20:58 06-10-2004
Troitsky



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

Цитата:
диалог открытия файла

Я немного не понял...
Ты хочешь чтобы у тебя VB вываливал такой диалог или Word? Т.е. в какой момент ты ожидаешь появление этого диалога и что ты от него хочешь?
 
Но в любом случае, если не ошибаюсь, придется подключать Microsoft Common Dialog Control
 

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 21:22 06-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Troitsky
нужен диалог самый что ненаесть обычный (что во всех прогах) который дает выбрать файл с диска, потом то что возвращает этот диалог, я передам ворду для открытия.
присоединил Microsoft Common Dialog Control, ничего, еще присоединил Microsoft Windows Common Controls 6.0, тоже ничего, все та-же ошибка
 
Добавлено
хмм, а еще, почему objWord не доступен из других Sub'ов?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 22:14 06-10-2004
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Такс...
Значит диалог всеже VB тебе будет показывать.
В среде разработки Microsoft Visual Basic в Project/Components подключай компонент Microsoft Common Dialog Control. Помещай его как компонент на форму и работай уже с ним.
 
Добавлено

Цитата:
почему objWord не доступен из других Sub'ов?

Значит ты присваиваешь ссылку на объект только в одной конкретной процедуре и тут же убиваешь ее.
Попробуй объявить эту объектную переменную на уровне проекта, но только не забудь освободить объект при окончании работы программы.

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 22:50 06-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Troitsky
боже, как же это жутко чувствовать себя опять ламером...

Цитата:
Значит ты присваиваешь ссылку на объект только в одной конкретной процедуре и тут же убиваешь ее.  
Попробуй объявить эту объектную переменную на уровне проекта, но только не забудь освободить объект при окончании работы программы.

я так понимаю что на уровне проэкта, это вне sub'ов, так? а как ее убивать при выходе? какое-нибудь событие onFormClose?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 23:39 06-10-2004
Troitsky



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

Цитата:
я так понимаю что на уровне проэкта, это вне sub'ов, так?

Короче вверху в самом
 

Цитата:
 а как ее убивать при выходе?

Set objWord = Nothing

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 00:03 07-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
прикручивание
Цитата:
Microsoft Common Dialog Control

не помогает...  
неужели самому писать диалог открытия файла нужно?

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 19:04 10-10-2004
Troitsky



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

Цитата:
не помогает...  
неужели самому писать диалог открытия файла нужно?

 
Ничего самому писать не надо. Погоди. Объясни подробнее что и для чего не помогает. И как ты пытаешься это проделать.

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 21:37 10-10-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Troitsky
я активирую в Components галочку
Цитата:
Microsoft Common Dialog Control  

а потом тестирую прогу, он
Цитата:
ругается на выделенную строку



----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 22:08 10-10-2004
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кроме того, что ты "активируешь в Components галочку", ты еще должен добавить этот контрол на форму и дать ему название (судя по куску кода, который ты привел) dlgCommonDialog.

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 23:46 10-10-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Visual Basic: Открыть Word документ, и сделать изменения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru