Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Автоматическое заполнение документа в Word текстом из TextBox

74K
06 мая 2013 года
JohnStotch
8 / / 06.05.2013
Добрый день.
Проблема следующая существует документ word, где необходимо постоянно корректировать определенные данные, хотелось бы автоматизировать данный процесс. Программу хотелось бы видеть следующую при нажатии на кнопку, программа бы открывала документ, брала значения из TextBox и вставляла бы в определенное место в этом документе.
Прошу помощи с реализацией.
275
06 мая 2013 года
pashulka
985 / / 19.09.2004
Можно сделать так, разумеется указав своё месторасположение документа и имя реально существующей закладки :

Код:
Private Const iFileName = "C:\doc1.doc"

Private Sub Command1_Click()
    Dim objWordApp As Object, objWordDoc As Object
 
    If Dir(iFileName) <> "" Then
       Set objWordApp = CreateObject("Word.Application")
       Set objWordDoc = objWordApp.Documents.Open(iFileName)
       
       objWordDoc.BookMarks("Имя_закладки").Range.Text = Text1.Text
       'objWordApp.Visible = True
       
       objWordDoc.Close saveChanges:=-1 'wdSaveChanges
       objWordApp.Quit
    Else
       MsgBox "Документ изволит отсутствовать", vbCritical, ""
    End If
End Sub
P.S. При ответе, цитировать предыдущее сообщение, вовсе не обязательно.
275
08 мая 2013 года
pashulka
985 / / 19.09.2004
Все вышеперечисленные условия остаются в силе, кроме того, добавляются следующие :

- имя изменённого документа вводится в текстовое поле с именем Text2
- вводить расширение файла, т.е. .doc не нужно
- кроме этого, необходимо помнить, что имя файла не должно содержать следующих символов \ / : * ? " < > | (впрочем, лично я бы не полагался на человеческую память, а просто запретил ввод перечисленных символов в текстовое поле)

Что касается папки "C:\Изменяемые_документы", то в её создании вручную нет особой необходимости, т.к. при её отсутствии она будет создана программно.

Код:
Private Const iFileName = "C:\doc1.doc"
Private Const iPath = "C:\Изменяемые_документы\"

Private Sub Command1_Click()
    Dim objWordApp As Object, objWordDoc As Object
 
    If Dir(iFileName) <> "" Then
       Set objWordApp = CreateObject("Word.Application")
       Set objWordDoc = objWordApp.Documents.Open(iFileName)
       
       objWordDoc.BookMarks("Имя_закладки").Range.Text = Text1.Text
       'objWordApp.Visible = True
       
       objWordDoc.Close saveChanges:=-1 'wdSaveChanges
       objWordApp.Quit
       
       If Dir(iPath, vbDirectory) = "" Then MkDir iPath
       
       FileCopy iFileName, iPath & Text2.Text & ".doc"
    Else
       MsgBox "Документ изволит отсутствовать", vbCritical, ""
    End If
End Sub
275
08 мая 2013 года
pashulka
985 / / 19.09.2004
Вариант II.

Код:
Private Const iFileName = "C:\doc1.doc"
Private Const iPath = "C:\Изменяемые_документы\"

Private Sub Command1_Click()
    Dim objWordApp As Object, objWordDoc As Object
 
    If Dir(iFileName) <> "" Then
       Set objWordApp = CreateObject("Word.Application")
       Set objWordDoc = objWordApp.Documents.Open(iFileName)
       
       objWordDoc.BookMarks("Имя_закладки").Range.Text = Text1.Text
       'objWordApp.Visible = True
       
       If Dir(iPath, vbDirectory) = "" Then MkDir iPath
       
       objWordDoc.SaveAs FileName:=iPath & Text2.Text & ".doc"
       objWordDoc.Close: objWordApp.Quit
    Else
       MsgBox "Документ изволит отсутствовать", vbCritical, ""
    End If
End Sub
275
06 мая 2013 года
pashulka
985 / / 19.09.2004
Где находятся текстовые поля (TextBox) ?

1) в другом word'ом документе
2) в excel'ой рабочей книге
3) Вы создаете отдельную программу (.exe) для ввода данных

Если Вы выбрали пункт 1 или 2, то имеется ли пользовательская форма (UserForm) ?

и наконец, что такое "определенное место в этом документе" ?

1) это ячейки word'ой таблицы
2) закладки
3) что-то другое, известное только Вам
74K
06 мая 2013 года
JohnStotch
8 / / 06.05.2013
Цитата: pashulka
Где находятся текстовые поля (TextBox) ?

1) в другом word'ом документе
2) в excel'ой рабочей книге
3) Вы создаете отдельную программу (.exe) для ввода данных

Если Вы выбрали пункт 1 или 2, то имеется ли пользовательская форма (UserForm) ?

и наконец, что такое "определенное место в этом документе" ?

1) это ячейки word'ой таблицы
2) закладки
3) что-то другое, известное только Вам



Это отдельная программа .exe, где вводятся данные в TextBox ячейки, а потом эти данные вставляются в Worl Документ.
Определенное место это закладка, прямо в тексте документа, то есть закладка меняется на текст из ячейки TextBox

74K
07 мая 2013 года
JohnStotch
8 / / 06.05.2013
не работает, при нажатии на кнопку ничего не происходит
275
07 мая 2013 года
pashulka
985 / / 19.09.2004
Ничего не происходить не может, ибо если :

- word установлен
- документ существует
- в нём наличествует закладка, с указанным в коде именем
- в соответствующее текстовое поле введён текст
- и кнопка с указанным именем наличествует

то после клика кнопки - "текст закладки" будет изменён.

Другое дело, что увидеть воочию изменения можно только после открытия документа.

P.S. Надеюсь не нужно уточнять, что учитывая раздел форума, речь идёт о Visual Basic 5/6
74K
08 мая 2013 года
JohnStotch
8 / / 06.05.2013
Извиняюсь за свое нубство, кнопка не так называлась, все работает, огромное спасибо!

И у меня еще вопрос, можно чтобы измененный документ (.doc) сохранялся отдельно в папку с указанным именем в текст бокс.

Например:
При нажатии на кнопку текст закладки изменился и измененный документ сохранился в папке с названием из textbox2 по пути C:\изменяемые_документы\
74K
08 мая 2013 года
JohnStotch
8 / / 06.05.2013
Видимо не совсем корректно объяснил, мне необходимо чтобы не файлу присваивалось имя TextBox2, а папке в которую он копируется т.е. создавалась директория C:\изменяемые_документы\(TextBox2)\doc1.doc

Причем, чтобы изменения doc1.doc по пути C:\doc1.doc не происходили, т.е. весь текст закладок остался прежним до изменения

P.S. Заранее приношу извинения если не корректно объясняю
275
08 мая 2013 года
pashulka
985 / / 19.09.2004
Т.е. Вы хотите сначала скопировать исходный файл во вновь созданную папку (т.е. что-то вроде создания архива) и только затем производить изменения в исходном файле ?
74K
08 мая 2013 года
JohnStotch
8 / / 06.05.2013
Сразу не увидел, второй код решает проблему. Огромной спасибо! Вопрос Решен!
74K
08 мая 2013 года
JohnStotch
8 / / 06.05.2013
Цитата: pashulka
Т.е. Вы хотите сначала скопировать исходный файл во вновь созданную папку (т.е. что-то вроде создания архива) и только затем производить изменения в исходном файле ?


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

275
08 мая 2013 года
pashulka
985 / / 19.09.2004
Если под отдельной ячейкой - подразумевается текстовое поле с именем Text2, то можно попробовать так, только папка "C:\Изменяемые_документы\" уже должна существовать,

и есть вероятность, что в новом документе сохранится старый текст закладки ... так что нужно тестировать внимательно :)

Код:
Private Sub Command1_Click()
    Dim iFileName$, iPath$
    Dim objWordApp As Object, objWordDoc As Object
   
    iFileName = "C:\doc1.doc"
    iPath = "C:\Изменяемые_документы\" & Text2.Text
 
    If Dir(iFileName) <> "" Then
       Set objWordApp = CreateObject("Word.Application")
       Set objWordDoc = objWordApp.Documents.Open(iFileName)
       
       objWordDoc.BookMarks("Имя_закладки").Range.Text = Text1.Text
       'objWordApp.Visible = True
       
       If Dir(iPath, vbDirectory) = "" Then MkDir iPath
       
       objWordDoc.SaveAs FileName:=iPath & "\doc1.doc"
       objWordDoc.Close: objWordApp.Quit
    Else
       MsgBox "Документ изволит отсутствовать", vbCritical, ""
    End If
End Sub
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог