Подстановка значений в документы Word

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Barabuka
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 11.09.2005 (Вс) 23:28

Подстановка значений в документы Word

Сообщение Barabuka » 11.09.2005 (Вс) 23:40

Посоветуйте как сделать подстановку значений в документы Word ?

Вот рабочий код на VB который подставляет нужные значения в указанные HTML файлы, а мне надо то же самое, но в файлы Ворда ( причем чтобы менялись значения как в тексте, так и в колонтитулах)
Что надо для этого сюда дописать ?
--------------------------------------------------
<%@Language = VBScript %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<%
If (Request.Form("Act") = "send") Then
Dim FSO
Dim FWT
Dim FOUT
Dim OutFileNumber
Dim OutFileFullName
Dim OutText
Dim IdentParamText
Dim aParametersNames(2)
Dim aParametersValues(2)'сюда будет записано то что ввел ползователь в форме число в скобках должно быть равно количеству элементов в aParametersNames
Dim aFilesWithText(2) 'массив исходных файлов
Dim aOutFilesNames(2) 'массив имен выходных файлов
Dim aOutFilesExt(2) 'массив имен расширений файлов (количества во всех 3-х должны совпадать и опрделены далее)
Dim CurrentLine
Dim ErrNum

ErrNum = 0
OutText = ""
aParametersNames(1) = "Param1" 'должны совпадать с теми что в форме
aParametersNames(2) = "Param2"

aFilesWithText(1) = "TextFile1.txt"
aFilesWithText(2) = "TextFile2.txt"

aOutFilesNames(1) = "OutFileOne"
aOutFilesExt(1) = "txt"
aOutFilesNames(2) = "OutFileTwo"
aOutFilesExt(2) = "txt"

IdentParamText = "###" 'текст служащий для того что б сделать запись о параметре в тексте исходного документа уникальной

Set FSO = CreateObject("Scripting.FileSystemObject")

For j = 1 To UBound(aFilesWithText)

OutFileNumber = 0

If FSO.FileExists(Server.MapPath(aFilesWithText(j))) Then

For i = 1 To UBound(aParametersNames)
aParametersValues(i) = Request.Form(aParametersNames(i))
If aParametersValues(i) = null OR aParametersValues(i) = "undefined" Then
aParametersValues(i) = "" 'если что - то кривое пришло то делаем его пустым хотя это неправильно надо заставлять пользователя вводить все значения
End If
Next

SET FWT = FSO.OpenTextFile(Server.MapPath(aFilesWithText(j)) , 1, False)
Do While FWT.AtEndOfStream <> True
CurrentLine = FWT.ReadLine
For i = 1 To UBound(aParametersNames)
CurrentLine = Replace(CurrentLine,IdentParamText & aParametersNames(i) & IdentParamText,aParametersValues(i))
Next
OutText = OutText & CurrentLine & vbCrLf
Loop
FWT.Close
FWT = NULL

OutFileFullName = aOutFilesNames(j) & "." & aOutFilesExt(j)

Do while FSO.FileExists(Server.MapPath(OutFileFullName))
OutFileNumber = OutFileNumber + 1
OutFileFullName = aOutFilesNames(j) & Cstr(OutFileNumber) & "." & aOutFilesExt(j)
Loop

On Error Resume Next
SET FOUT = FSO.CreateTextFile(Server.MapPath(OutFileFullName),true)
If Err.Number <> 0 Then
Response.Write "<br><br><div align=""center"">Error write to out file.</div><br>" & Err.Description
ErrNum = 1
End If
On Error goto 0

If ErrNum = 0 Then
On Error Resume Next
FOUT.Write OutText
If Err.Number <> 0 Then
Response.Write "<br><br><div align=""center"">Error write to out file.</div><br>" & Err.Description
ErrNum = 2
End If
On Error goto 0
End If

If ErrNum = 0 Then
FOUT.Close
End If
FOUT = NULL

Else
Response.Write("<br><br><div align=""center"">Error! Text file not found.</div>")
End If
Next
FSO = NULL
End If
%>
<html>
<head>
<title>Form</title>
</head>

<body>
<form action="main.asp" method="post">
<input type="Hidden" name="Act" value="send">
Параметр 1:<input type="Text" name="Param1"><br>
Параметр 2:<input type="Text" name="Param2"><br>
<input type="Submit" value="Отправить">
</form>

</body>
</html>
-----------------------------------------

nappel
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 14.10.2004 (Чт) 11:55
Откуда: Moscow

Re: Подстановка значений в документы Word

Сообщение nappel » 09.11.2005 (Ср) 17:27

Barabuka писал(а):Посоветуйте как сделать подстановку значений в документы Word ?


Set wrd = CreateObject("Word.Application")
wrd.Visible = False ''Загрузить Word
Set doc = wrd.Documents.Add("c:\oflameron-form.xml")
wrd.ActiveDocument.PrintOut Copies:=1, Pages:="1", ManualDuplexPrint:=True '' Двусторонняя печать документа
wrd.ActiveDocument.Close ''Закрыть документ Word
wrd.Quit ''Закрыть приложение Word




wrd.ActiveWindow.Selection.Find.Text = "sh" ''Искать текст "sh"
wrd.ActiveWindow.Selection.Find.Replacement.Text = "T" ''Заменить "sh" на "T"
wrd.ActiveWindow.Selection.Find.Wrap = wdFindContinue ''Повторять поиск далее (не только один раз)
wrd.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceOne '' Выполнить поиск и замену


Больше примеров можно посмотреть здесь


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 176

    TopList