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
Автоматическое заполнение документа в Word текстом из TextBox
Проблема следующая существует документ word, где необходимо постоянно корректировать определенные данные, хотелось бы автоматизировать данный процесс. Программу хотелось бы видеть следующую при нажатии на кнопку, программа бы открывала документ, брала значения из TextBox и вставляла бы в определенное место в этом документе.
Прошу помощи с реализацией.
Можно сделать так, разумеется указав своё месторасположение документа и имя реально существующей закладки :
- имя изменённого документа вводится в текстовое поле с именем 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
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
Код:
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
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
1) в другом word'ом документе
2) в excel'ой рабочей книге
3) Вы создаете отдельную программу (.exe) для ввода данных
Если Вы выбрали пункт 1 или 2, то имеется ли пользовательская форма (UserForm) ?
и наконец, что такое "определенное место в этом документе" ?
1) это ячейки word'ой таблицы
2) закладки
3) что-то другое, известное только Вам
Цитата: pashulka
Где находятся текстовые поля (TextBox) ?
1) в другом word'ом документе
2) в excel'ой рабочей книге
3) Вы создаете отдельную программу (.exe) для ввода данных
Если Вы выбрали пункт 1 или 2, то имеется ли пользовательская форма (UserForm) ?
и наконец, что такое "определенное место в этом документе" ?
1) это ячейки word'ой таблицы
2) закладки
3) что-то другое, известное только Вам
1) в другом word'ом документе
2) в excel'ой рабочей книге
3) Вы создаете отдельную программу (.exe) для ввода данных
Если Вы выбрали пункт 1 или 2, то имеется ли пользовательская форма (UserForm) ?
и наконец, что такое "определенное место в этом документе" ?
1) это ячейки word'ой таблицы
2) закладки
3) что-то другое, известное только Вам
Это отдельная программа .exe, где вводятся данные в TextBox ячейки, а потом эти данные вставляются в Worl Документ.
Определенное место это закладка, прямо в тексте документа, то есть закладка меняется на текст из ячейки TextBox
не работает, при нажатии на кнопку ничего не происходит
- word установлен
- документ существует
- в нём наличествует закладка, с указанным в коде именем
- в соответствующее текстовое поле введён текст
- и кнопка с указанным именем наличествует
то после клика кнопки - "текст закладки" будет изменён.
Другое дело, что увидеть воочию изменения можно только после открытия документа.
P.S. Надеюсь не нужно уточнять, что учитывая раздел форума, речь идёт о Visual Basic 5/6
И у меня еще вопрос, можно чтобы измененный документ (.doc) сохранялся отдельно в папку с указанным именем в текст бокс.
Например:
При нажатии на кнопку текст закладки изменился и измененный документ сохранился в папке с названием из textbox2 по пути C:\изменяемые_документы\
Причем, чтобы изменения doc1.doc по пути C:\doc1.doc не происходили, т.е. весь текст закладок остался прежним до изменения
P.S. Заранее приношу извинения если не корректно объясняю
Т.е. Вы хотите сначала скопировать исходный файл во вновь созданную папку (т.е. что-то вроде создания архива) и только затем производить изменения в исходном файле ?
Сразу не увидел, второй код решает проблему. Огромной спасибо! Вопрос Решен!
Цитата: pashulka
Т.е. Вы хотите сначала скопировать исходный файл во вновь созданную папку (т.е. что-то вроде создания архива) и только затем производить изменения в исходном файле ?
с папкой не так критично, но хотелось чтобы измененный документ сохранялся в папке с названием которое вводится в отдельной ячейке в программе
и есть вероятность, что в новом документе сохранится старый текст закладки ... так что нужно тестировать внимательно :)
Код:
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
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