1 (изменено: wooch, 2011-05-04 10:58:42)

Тема: VBScript: Вставка линии в документ Word

Добрый день. Стоит задача скриптом создать подпись в Аутлуке. В инете много скриптов на эту тему, но ни в одном из них нет вставки стандартной линии (HTML тег HR). Вообщем проблема в том, что не могу понять логику вставки данной линии. Ниже кусок кода:

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

objSelection.InlineShapes.addHorizontalLineStandard.Width = "200"

objSelection.InlineShapes.AddHorizontalLineStandard.HorizontalLineFormat.Alignment = 0

Результат его таков: вставляет одну линию посередине листа с шириной 200 и вторую линию с шириной 200 но слева.
Вопрос как сделать так чтобы у меня была только одна линия с шириной 200 и выровненная по левому краю.

2 (изменено: BeS Yara, 2011-05-04 12:56:15)

Re: VBScript: Вставка линии в документ Word

Добрый день.

Вместо


Set objSelection = objWord.Selection
objSelection.InlineShapes.addHorizontalLineStandard.Width = "200"

objSelection.InlineShapes.AddHorizontalLineStandard.HorizontalLineFormat.Alignment = 0

попробуйте


Set objSelection = objWord.Selection.InlineShapes.AddHorizontalLineStandard
With objSelection
    .Width = 200
    .HorizontalLineFormat.Alignment = 0
End With

Из скрипта не проверял. Из макроса линия одна, выравнена по левому краю.

________________________
Маленько пропустил, поправил объект

3

Re: VBScript: Вставка линии в документ Word

Спасибо огромное!!! Работает! Сидел над этим три дня.

4

Re: VBScript: Вставка линии в документ Word

Теперь сплыла очередная проблема, после ввода линии интервал между ней и следующей строкой увеличен. Убирается уже в готовом документе нажатием Backspace. Можно как то сделать интервал одинарный как во всем абзаце?

5

Re: VBScript: Вставка линии в документ Word

wooch пишет:

после ввода линии интервал между ней и следующей строкой увеличен

Боюсь это косяк не ворда, а аутлука. Периодически возникает, например, при переносе данных на другой компьютер(увеличенные интервалы между строками, и бэкспейсом не лечатся). Зачастую, единстенное лекарство - скопировать содержимое подписи в чистый текст(например, в блокнот), оттуда уже в подпись и заново отформатировать(шрифт, жирность и т.д.). Т.к. перенос профилей аутлуковских не каждый день делаю, других методов бороться с двойными интервалами не искал.

Кстати, посмотрел формат подписи - по умолчанию в Outlook 2003 создаётся в формате html(только с кучей дополнительных параметров, стилей и т.д.) и в кодировке UTF-8(с другой не экспериментировал, возможно тоже будет работать если кодировку в meta прописать верно). Может быть имеет смысл взять пустую подпись за основу(шаблон) и генерировать файл с подписью напрямую? Из преимуществ - никаких завязок на офис, "чистый html" и TextStream.WriteLine
Кстати, вся эта куча форматирования, судя по моим экспериментам, это мусорный код офиса. Сильно порезанный вариант полностью работоспособен. Например такой:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<BODY>
<DIV align=left>
<HR align=left SIZE=2 width=267>
</DIV>
<DIV align=left><SPAN><FONT face="Times New Roman">Пишите ещё!</FONT></SPAN></DIV>
<DIV align=left><FONT face=Wingdings>(</FONT><FONT face="Times New Roman"> 8(800)777-6655</FONT></DIV>
<DIV align=left><FONT face=Wingdings>)</FONT><FONT face="Times New Roman"> 8(916)123-4567</FONT></DIV>
</BODY>
</HTML>

Даже больше - убрал все теги не относящиеся к форматированию текста подписи и аутлук всё равно нормально её отобразил и нормально добавил в письмо. Думаю очень интересный вариант Если есть возможность проверить как воспримет такую подпись аутлук 2007 и 2010 - отпишитесь, пожалуйста.

6

Re: VBScript: Вставка линии в документ Word

OFF:

BeS Yara пишет:

Может быть имеет смысл взять пустую подпись за основу(шаблон) и генерировать файл с подписью напрямую?

Угу. Я так и делал (правда, ручками).

BeS Yara, а не нужно ли в HTML добавить тэг с указанием кодировки? Или, в данном случае, сие не существенно?

7

Re: VBScript: Вставка линии в документ Word

alexii пишет:

а не нужно ли в HTML добавить тэг с указанием кодировки? Или, в данном случае, сие не существенно?

Скажем так, в данном случае всё работало - файл с подписью аутлуком создан в формате UTF-8(с BOM). Редактировал бредом, он распознавал что это UTF и подпись нормально читалась.

Сейчас попробовал сделать подпись в ASCII(1251) - работает и при полностью оформленном HTML, и в варианте


<DIV align=left><HR align=left SIZE=2 width=267></DIV>
<DIV align=left><SPAN><FONT face="Times New Roman">Пишите ещё!</FONT></SPAN></DIV>
<DIV align=left><FONT face=Wingdings>(</FONT><FONT face="Times New Roman"> 8(800)777-6655</FONT></DIV>
<DIV align=left><FONT face=Wingdings>)</FONT><FONT face="Times New Roman"> 8(916)123-4567</FONT></DIV>

В настройках аутлука стоит по умолчанию формат HTML и кодировка KOI-8R.

А вот для формата RTF или plain-text подписи лучше делать самостоятельно(одноимённый файл с расширением rtf и txt соответственно), по крайней мере у меня аутлук их сформировал коряво(национальные символы покорёжило). Причём для в 2003-м аутлуке оказалось без разницы в какой кодировке будет текстовой файл - или UTF с BOM, или обычный текстовой в 1251. В обоих случаях подпись в письмо вставилась в правильном виде(даже если html-версия подписи была в кодировке отличной от текстового варианта).

Я думаю, если использовать не UTF-8, то лучше прописать кодировку. Я бы не стал оставлять распознавание кодировки аутлуку, т.к. не известно что будет после очередного обновления

8

Re: VBScript: Вставка линии в документ Word

А смысл запариваться с созданием кучи файлов и затем распихивать хи по определенным местам когда можно воспользоваться objSignatureObject.EmailSignatureEntries и он создаст нужные файлы там где нужно, вне зависимости от версии офиса и ОС. Проверял корректность работы скрипта на 2007 и 2003 офисе и 2008, 2003 и 7 винде.

9

Re: VBScript: Вставка линии в документ Word

BeS Yara, спасибо, ясно.

wooch, как это будет выглядеть?

10 (изменено: wooch, 2011-05-05 17:43:38)

Re: VBScript: Вставка линии в документ Word

wooch, как это будет выглядеть?

Ну вот примерно весь скрипт:


On Error Resume Next

strRegard = "Best regards, "
strPhoneT = "Tel.: "
strFaxT = "Fax: "
strQua = "If you are not entirely satisfied with our service please contact: "
strGreen = "Please Consider the Environment before printing this Email." 


strName = name_1.value
strTitle = Title_1.value
strDepartment = Branch.value
strPhone = tel.value
strFax = fax.value
strEmail = "quality@mail.com"
strWeb = "www.mail.com"
strLogo = "\\mail.com\greenpeace.gif"

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries

objSelection.Font.Name = "Georgia"
objSelection.Font.Size = "10"
objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Paragraphs.Space1

Set objSelectionLine = objWord.Selection.InlineShapes.AddHorizontalLineStandard
With objSelectionLine
    .Width = 200
    .HorizontalLineFormat.Alignment = 0
End With

objSelection.TypeText strRegard

objSelection.TypeText strName
objSelection.TypeText CHR(11)

objSelection.Font.Italic = True
objSelection.TypeText strTitle
objSelection.TypeText CHR(11)

objSelection.Font.Italic = False
objSelection.Font.Bold = True 
objSelection.TypeText strDepartment
objSelection.TypeText CHR(11)

objSelection.Font.Bold = False 
objSelection.TypeText strPhoneT & strPhone 
objSelection.TypeText CHR(11)

objSelection.TypeText strFaxT & strFax
objSelection.TypeText CHR(11)

objselection.font.color = RGB(0, 0, 255)

Set hyp = objSelection.Hyperlinks.Add(objSelection.Range, strWeb, "", "", strWeb)
hyp.Range.Font.Bold = True
hyp.Range.Font.Size = "10"
hyp.Range.Font.Name = "Georgia"
objSelection.TypeText CHR(11)

objSelection.Font.Name = "Times New Roman"

objSelection.Font.Size = "8"

objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Font.Bold = True
objSelection.TypeText strQua
Set hyp = objSelection.Hyperlinks.Add (objSelection.range, "mailto:" & strEmail, , , strEmail)
hyp.Range.Font.Bold = True
hyp.Range.Font.Color = RGB (0,0,139)
hyp.Range.Font.Size = "8"
hyp.Range.Font.Name = "Times New Roman"
objSelection.TypeText CHR(11)

objSelection.InlineShapes.AddPicture(strLogo)

objSelection.Font.Color = RGB (34, 139, 34)
objSelection.Font.Bold = False
objSelection.TypeText strGreen

Set objSelection = objDoc.Range()

objSignatureEntries.Add "Signature", objSelection
objSignatureObject.NewMessageSignature = "Signature"
objSignatureObject.ReplyMessageSignature = "Signature"

objDoc.Saved = True
objDoc.Close
objWord.Quit

MsgBox "Подпись сформирована",0,"Подпись"

Формирует требуемые файлы в профиле пользователя и назначает их по умолчанию в аутлуке.

11

Re: VBScript: Вставка линии в документ Word

Меня интересовал именно этот кусок:

…
Set objSelection = objDoc.Range()
 
objSignatureEntries.Add "Signature", objSelection
objSignatureObject.NewMessageSignature = "Signature"
objSignatureObject.ReplyMessageSignature = "Signature"
…

wooch, спасибо!

12

Re: VBScript: Вставка линии в документ Word

Да, похоже этот скрипт с минимальными изменениями кочует по интернету минимум с 2004-го года

Собственно попробовал свой вариант(впрочем на основе того же исходника), попровал вариант wooch - всё работает нормально(никаких пробелов после HR)... При одном маленьком условии - редактор письма Word. Как только снимаю галку(т.е. используется встроенный в аутлук редактор), так появляется доп строка

Если запросить письмо в виде хтмл, то видим:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=koi8-r" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.19046"></HEAD>
<BODY>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV class=Section1>
<DIV class=MsoNormal><SPAN
style="FONT-FAMILY: Georgia; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt">
<HR style="WIDTH: 200pt" align=left SIZE=2 width=267>
</SPAN></DIV>
<P class=MsoNormal><SPAN
style="FONT-FAMILY: Georgia; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt">Best
regards, asa<BR><I style="mso-bidi-font-style: normal">pppp<BR></I><B
style="mso-bidi-font-weight: normal">0190<BR></B>Tel.: 8(800)1234567<BR>Fax:
8(800)7654321<BR><B style="mso-bidi-font-weight: normal"><A
href="outbind://2/www.mail.com">www.mail.com</A><BR></B></SPAN><B
style="mso-bidi-font-weight: normal"><SPAN
style="COLOR: black; FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt">If you are not
entirely satisfied with our service please contact: </SPAN></B><B
style="mso-bidi-font-weight: normal"><SPAN
style="COLOR: darkblue; FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt"><A
href="mailto:quality@mail.com"><SPAN
style="COLOR: darkblue">quality@mail.com</SPAN></A><BR></SPAN></B><SPAN
style="COLOR: forestgreen; FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt">Please
Consider the Environment before printing this Email.<?xml:namespace prefix = o
ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P></DIV>
<DIV>&nbsp;</DIV></BODY></HTML>

Как мы видим, текст идущий после HR-а помещён в параграф. Вот именно из-за этого и появляется пустая строка(в IE и лисе больше, в опере меньше)
В качестве доказательства достаточно просмотреть как выглядит письмо с этим тегом и без него.

Как програмно избавится от этого ещё подумаю(одна идея есть, но надо проверить).

13

Re: VBScript: Вставка линии в документ Word

Идея не сработала. Точнее в Word перевод строки после HR убирается(макрос), но тоже самое из скрипта если и работает, то на выходе результат не меняется. Есть подозрение что "слабое звено" это objSignatureEntries.Add(т.е. непосредственно создание подписи), но пока ничего полезного по EmailOptions и её производным не нашел.

Проблема у меня наблюдается только для письма в формате HTML(в RTF такого нет, хотя там сама полоса толстая), всё что могу предложить - находить в файле с html-версией подписи этот параграф и удалять лишние тэги.

14

Re: VBScript: Вставка линии в документ Word

Вся фиштка в том, что даже после удаления этой строки вручную ( в самом аутлуке) и нажатии кнопки "сохранить" эта строка восстанавливается!!! Почему?

15

Re: VBScript: Вставка линии в документ Word

BeS Yara пишет:

Проблема у меня наблюдается только для письма в формате HTML(в RTF такого нет, хотя там сама полоса толстая), всё что могу предложить - находить в файле с html-версией подписи этот параграф и удалять лишние тэги.

А можете подсказать как удалить лишние теги в ужее созданном документе?

16 (изменено: BeS Yara, 2011-05-10 19:26:27)

Re: VBScript: Вставка линии в документ Word

wooch пишет:
BeS Yara пишет:

Проблема у меня наблюдается только для письма в формате HTML(в RTF такого нет, хотя там сама полоса толстая), всё что могу предложить - находить в файле с html-версией подписи этот параграф и удалять лишние тэги.

А можете подсказать как удалить лишние теги в ужее созданном документе?

Если подписи однотипные, то я бы попробовал через регулярные выражения. Примерно так(в 6-ой строке название файла подписи на своё нужно поменять):


Option Explicit
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const f_ASCII = 0, f_Unicode = -1, f_Default = -2
'===============================================================================
Dim SignFile
SignFile = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Signatures\AD4 Signature.htm" ' подпись
Dim fso, f, ts
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(SignFile)
Set ts = f.OpenAsTextStream(ForReading, f_ASCII) ' если файл в UTF-8, то f_Unicode

' Считываем всю подпись
Dim stroka : stroka = ts.ReadAll

' Начинаем работать с регулярными выражениями:
Dim regEx, Match, Matches   ' Create variable.
Set regEx = New RegExp   ' Create a regular expression.
regEx.IgnoreCase = True   ' Set case insensitivity.
regEx.Global = True   ' Set global applicability.

regEx.Pattern = "(<hr[\S\s]{0,}?)(?:<p[\S\s]{0,}?>)([\S\s]{0,}?)(?:</p>)" ' шаблон поиска:
'(разделитель)(открывающий тэг параграфа)(текст параграфа)(закрывающий тэг параграфа)
Set Matches = regEx.Execute(stroka)
  For Each Match in Matches
   'wscript.echo "HR => " & Match.SubMatches(0)
   'wscript.echo "Телефоны => " & Match.SubMatches(1)
   stroka = replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare)
  Next
ts.Close

Это конечно вариант черновой(набрал из заготовок и примеров в хелпе), но с подписью которую создал мой аутлук работает
Содержимое переменной stroka после цикла - оригинальный файл подписи в котором убраны тэги в первом параграфе после разделителя(естественно для той разметки, которую генерирует мой аутлук). Если формат разметки на разных версиях аутлук незначительно отличается, то можно попробовать сделать универсальный шаблон. Или заготовить по шаблону на разные версии аутлука.

P.S. Что характерно - ранее упоминал что файл подписи у меня в UTF-8, теперь выяснилось что подписи созданные скриптом(objSignatureEntries.Add) создались в ASCII
____________________________________
... немного подправил шаблон

17 (изменено: wooch, 2011-05-11 13:45:05)

Re: VBScript: Вставка линии в документ Word

BeS Yara пишет:
wooch пишет:
BeS Yara пишет:

Проблема у меня наблюдается только для письма в формате HTML(в RTF такого нет, хотя там сама полоса толстая), всё что могу предложить - находить в файле с html-версией подписи этот параграф и удалять лишние тэги.

А можете подсказать как удалить лишние теги в ужее созданном документе?

Если подписи однотипные, то я бы попробовал через регулярные выражения. Примерно так(в 6-ой строке название файла подписи на своё нужно поменять):


Option Explicit
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const f_ASCII = 0, f_Unicode = -1, f_Default = -2
'===============================================================================
Dim SignFile
SignFile = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Signatures\AD4 Signature.htm" ' подпись
Dim fso, f, ts
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(SignFile)
Set ts = f.OpenAsTextStream(ForReading, f_ASCII) ' если файл в UTF-8, то f_Unicode

' Считываем всю подпись
Dim stroka : stroka = ts.ReadAll

' Начинаем работать с регулярными выражениями:
Dim regEx, Match, Matches   ' Create variable.
Set regEx = New RegExp   ' Create a regular expression.
regEx.IgnoreCase = True   ' Set case insensitivity.
regEx.Global = True   ' Set global applicability.

regEx.Pattern = "(<hr[\S\s]{0,}?)(?:<p[\S\s]{0,}?>)([\S\s]{0,}?)(?:</p>)" ' шаблон поиска:
'(разделитель)(открывающий тэг параграфа)(текст параграфа)(закрывающий тэг параграфа)
Set Matches = regEx.Execute(stroka)
  For Each Match in Matches
   'wscript.echo "HR => " & Match.SubMatches(0)
   'wscript.echo "Телефоны => " & Match.SubMatches(1)
   stroka = replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare)
  Next
ts.Close

Я конечно дико извиняюсь за свою тупость, но я не могу разобраться в шаблоне поиска. Подскажи как это сделать?
У меня создается вот такой код:


<div class=MsoNormal>

<hr size=2 width=267 style='width:200.0pt' align=left>

</div>

А нужно чтобы было:




<hr size=2 width=267 style='width:200.0pt' align=left>

Когда ручками убираю - все получается.

18

Re: VBScript: Вставка линии в документ Word

DIV-ы я не убирал - только <p> и </p>.
Шаблон составлен из четырёх подшаблонов, второй(<p>) и четвёртый(</p>) не нужен, поэтому не запоминается("?:")
Имелся кусок сделанной скриптом подписи(соответствующие куски заключил в скобки):


(
<hr size=2 width=267 style='width:200.0pt' align=left>

</div>
)
(
<p class=MsoNormal>
)
(
<span style='font-family:Wingdings'>(</span> 8(800)777-6655<br>
<span style='font-family:Wingdings'>)</span> 8(916)123-4567<br
style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]>
)
(
</p>
)

replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare) - просто заменяет в исходном тексте подписи тот кусок что приведён выше на склеенный из подшаблонов(без <p> и </p>). Т.о. убирается только один параграф за разделителем.

Для избавления от DIV(в приведённом Вами примере) нужно поменять шаблон:

regEx.Pattern = "(?:<div[\S\s]{0,}?)(<[\S\s]{0,}?)(?:</div>)"

И реплейс:

stroka = replace(stroka, Match.Value, Match.SubMatches(0), 1, -1, vbTextCompare)

Если нужно убирать и <p> и <div>, то шаблон будет выглядеть примерно так:

regEx.Pattern = "(?:<div[\S\s]{0,}?)(<hr[\S\s]{0,}?)(?:</div>[\S\s]{0,}?)(?:<p[\S\s]{0,}?>)([\S\s]{0,}?)(?:</p>)"

Реплейс оставить как в первоначальном варианте:

stroka = replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare)

19

Re: VBScript: Вставка линии в документ Word

ХЗ, но почему то не работает,  буду разбираться в чем проблема

20

Re: VBScript: Вставка линии в документ Word

wooch, что именно и как не работает?
Файл подписи в ASCII или в UTF-8? Приведённый мной скрипт читает файл как ASCII - в юникоде он конечно ничего не найдёт.
Можете привести код и описание проблемы?

21

Re: VBScript: Вставка линии в документ Word

Поэкспериментировал...
С файлом в UTF-8 нормально всё работает в режиме ASCII, а f_Unicode относится не к UTF-8, а именно к Unicode(что не одно и тоже).

Что характерно для созданных аутлуком подписей:
HTML-подпись в кодировке UTF-8(EE BB BF)
TXT-подпись в кодировке UTF-16LE(FF FE)
RTF-подпись в заголовке упоимнается кодировка win-1251, но при этом сам текст похоже в одном из UTF-ов, но  в начале отображаемого текста(F3 в TotalCommander, Word) выводятся BOM-символы от UTF-8

wooch, можете привести коды первых 4 байтов в файле подписи(чтобы определиться с кодировкой подписи)? Пока не могу понять что именно может не работать

22

Re: VBScript: Вставка линии в документ Word

Вот нашел упрощенный вариант:


Const ForReading = 1
Const ForWriting = 2

strFileName = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Signatures\Signature.htm"
strOldText = "<div class=MsoNormal>"
strNewText = " "

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)

Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strNewText
objFile.Close

Но почему то скрипт обрабатывается только если я его запускаю отдельно, если вставить в код после формирования подписи то он ее не редактирует.:(

23

Re: VBScript: Вставка линии в документ Word

BeS Yara пишет:

Поэкспериментировал...
С файлом в UTF-8 нормально всё работает в режиме ASCII, а f_Unicode относится не к UTF-8, а именно к Unicode(что не одно и тоже).

Что характерно для созданных аутлуком подписей:
HTML-подпись в кодировке UTF-8(EE BB BF)
TXT-подпись в кодировке UTF-16LE(FF FE)
RTF-подпись в заголовке упоимнается кодировка win-1251, но при этом сам текст похоже в одном из UTF-ов, но  в начале отображаемого текста(F3 в TotalCommander, Word) выводятся BOM-символы от UTF-8

wooch, можете привести коды первых 4 байтов в файле подписи(чтобы определиться с кодировкой подписи)? Пока не могу понять что именно может не работать

Первые байты 3C 68

24

Re: VBScript: Вставка линии в документ Word

wooch пишет:

Первые байты 3C 68

Т.е. "<h", надо полагать это кусок от "<html>" - другими словами, ни под один из BOM-ов указанных на вики не подходит. Значит кодировка - ASCII.

wooch пишет:

Вот нашел упрощенный вариант:

Хорошо, открывающий тэг убрали(кстати, зачем убирать div?), а закрывающий?
Собрал два в одном, добавил запись в файл(только вставку лого закоментировал):


On Error Resume Next

strRegard = "Best _regards, "
strPhoneT = "Tel.: "
strFaxT = "Fax: "
strQua = "If you are not entirely satisfied with our service please contact: "
strGreen = "Please Consider the Environment before printing this Email."
Dim Signature: Signature = "Podpis02"

strName = name_1.value
strTitle = Title_1.value
strDepartment = Branch.value
strPhone = tel.value
strFax = fax.value
strEmail = "quality@mail.com"
strWeb = "www.mail.com"
strLogo = "\\mail.com\greenpeace.gif"

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries

objSelection.Font.Name = "Georgia"
objSelection.Font.Size = "10"
objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Paragraphs.Space1

Set objSelectionLine = objWord.Selection.InlineShapes.AddHorizontalLineStandard
With objSelectionLine
    .Width = 200
    .HorizontalLineFormat.Alignment = 0
End With

objSelection.TypeText strRegard

objSelection.TypeText strName
objSelection.TypeText CHR(11)

objSelection.Font.Italic = True
objSelection.TypeText strTitle
objSelection.TypeText CHR(11)

objSelection.Font.Italic = False
objSelection.Font.Bold = True
objSelection.TypeText strDepartment
objSelection.TypeText CHR(11)

objSelection.Font.Bold = False
objSelection.TypeText strPhoneT & strPhone
objSelection.TypeText CHR(11)

objSelection.TypeText strFaxT & strFax
objSelection.TypeText CHR(11)

objselection.font.color = RGB(0, 0, 255)

Set hyp = objSelection.Hyperlinks.Add(objSelection.Range, strWeb, "", "", strWeb)
hyp.Range.Font.Bold = True
hyp.Range.Font.Size = "10"
hyp.Range.Font.Name = "Georgia"
objSelection.TypeText CHR(11)

objSelection.Font.Name = "Times New Roman"

objSelection.Font.Size = "8"

objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Font.Bold = True
objSelection.TypeText strQua
Set hyp = objSelection.Hyperlinks.Add (objSelection.range, "mailto:" & strEmail, , , strEmail)
hyp.Range.Font.Bold = True
hyp.Range.Font.Color = RGB (0,0,139)
hyp.Range.Font.Size = "8"
hyp.Range.Font.Name = "Times New Roman"
objSelection.TypeText CHR(11)

'objSelection.InlineShapes.AddPicture(strLogo)

objSelection.Font.Color = RGB (34, 139, 34)
objSelection.Font.Bold = False
objSelection.TypeText strGreen

Set objSelection = objDoc.Range()

objSignatureEntries.Add Signature, objSelection
objSignatureObject.NewMessageSignature = Signature
objSignatureObject.ReplyMessageSignature = Signature

objDoc.Saved = True
objDoc.Close
objWord.Quit

MsgBox "Подпись сформирована",0,"Подпись"

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const f_ASCII = 0, f_Unicode = -1, f_Default = -2
'===============================================================================
Dim SignFile
SignFile = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Signatures\" & Signature & ".htm" ' подпись
Dim fso, f, ts
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(SignFile)
Set ts = f.OpenAsTextStream(ForReading, f_ASCII)

' Считываем всю подпись
Dim stroka : stroka = ts.ReadAll

' Начинаем работать с регулярными выражениями:
Dim regEx, Match, Matches   ' Create variable.
Set regEx = New RegExp   ' Create a regular expression.
regEx.IgnoreCase = True   ' Set case insensitivity.
regEx.Global = True   ' Set global applicability.

regEx.Pattern = "(?:<div[\S\s]{0,}?)(<hr[\S\s]{0,}?)(?:</div>[\S\s]{0,}?)(?:<p[\S\s]{0,}?>)([\S\s]{0,}?)(?:</p>)" ' шаблон поиска:
'(разделитель)(открывающий тэг параграфа)(текст параграфа)(закрывающий тэг параграфа)
Set Matches = regEx.Execute(stroka)
  For Each Match in Matches
   'wscript.echo "HR => " & Match.SubMatches(0)
   'wscript.echo "Телефоны => " & Match.SubMatches(1)
   stroka = replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare)
  Next
ts.Close

Set ts = fso.CreateTextFile(SignFile, True, False)
ts.Write(stroka)
ts.Close

Подпись создаётся(даже если уже была), тэги трутся.

Теперь проблема в другом - не могу добиться чтобы даже на неочищенной от параграфов подписи был увеличенный интервал между разделителем и следующей строкой
Даже хуже - чищенная и нечищенная подписи одинаково корректно отображаются и в браузерах(IE8, Opera11, FF3.6). Ранее созданные(гарантировано глчювшие) подписи попробовал - тоже всё отлично... Возможно из-за даты

25

Re: VBScript: Вставка линии в документ Word

Спасибо, ваш скрипт работает на ура, но как только я его вставляю в HTML или HTA то снова появляется этот лишний абзац, вот ломаю голову почему это может происходить. Ниже пример моего HTA документа (извиняюсь что без тега Code - иначе все путается)

<html>

<title> Signature</title>

<head> 

<script language="vbscript">
'Процедура формирует подпись и устанавливает ее по умолчанию в Office 2003,2007

Sub Runmod
'Выбор языка, русский или английский
On Error Resume Next
If RadioButton(0).Checked Then 
strRegard = "С уважением, "
strPhoneT = "Тел.: "
strFaxT = "Факс: "
strQua = "Если у Вас есть претензии к качеству наших услуг, обращайтесь: "
strGreen = "Задумайтесь об окружающей среде, прежде чем распечатать это сообщение на бумаге."
End If 
If RadioButton(1).Checked Then 
strRegard = "Best regards, "
strPhoneT = "Tel.: "
strFaxT = "Fax: "
strQua = "If you are not entirely satisfied with our service please contact: "
strGreen = "Please Consider the Environment before printing this Email." 
End If 

strName = name_1.value
strTitle = Title_1.value
strDepartment = Branch.value
strPhone = tel.value
strFax = fax.value
strEmail = "quality@mail.com"
strWeb = "www.mail.com"
strLogo = "\\domain\NETLOGON\greenpeace.gif"
Dim Signature: Signature = "Podpis02" 

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
 
objSelection.Font.Name = "Georgia"
objSelection.Font.Size = "10"
objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Paragraphs.Space1
 
Set objSelectionLine = objWord.Selection.InlineShapes.AddHorizontalLineStandard
With objSelectionLine
    .Width = 200
    .HorizontalLineFormat.Alignment = 0
End With
 
objSelection.TypeText strRegard
 
objSelection.TypeText strName
objSelection.TypeText CHR(11)
 
objSelection.Font.Italic = True
objSelection.TypeText strTitle
objSelection.TypeText CHR(11)
 
objSelection.Font.Italic = False
objSelection.Font.Bold = True
objSelection.TypeText strDepartment
objSelection.TypeText CHR(11)
 
objSelection.Font.Bold = False
objSelection.TypeText strPhoneT & strPhone
objSelection.TypeText CHR(11)
 
objSelection.TypeText strFaxT & strFax
objSelection.TypeText CHR(11)
 
objselection.font.color = RGB(0, 0, 255)
 
Set hyp = objSelection.Hyperlinks.Add(objSelection.Range, strWeb, "", "", strWeb)
hyp.Range.Font.Bold = True
hyp.Range.Font.Size = "10"
hyp.Range.Font.Name = "Georgia"
objSelection.TypeText CHR(11)
 
objSelection.Font.Name = "Times New Roman"
 
objSelection.Font.Size = "8"
 
objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Font.Bold = True
objSelection.TypeText strQua
Set hyp = objSelection.Hyperlinks.Add (objSelection.range, "mailto:" & strEmail, , , strEmail)
hyp.Range.Font.Bold = True
hyp.Range.Font.Color = RGB (0,0,139)
hyp.Range.Font.Size = "8"
hyp.Range.Font.Name = "Times New Roman"
objSelection.TypeText CHR(11)
 
objSelection.InlineShapes.AddPicture(strLogo)

objSelection.Font.Color = RGB (34, 139, 34)
objSelection.Font.Bold = False
objSelection.TypeText strGreen
 
Set objSelection = objDoc.Range()
 
objSignatureEntries.Add Signature, objSelection
objSignatureObject.NewMessageSignature = Signature
objSignatureObject.ReplyMessageSignature = Signature
 
objDoc.Saved = True
objDoc.Close
objWord.Quit
 
MsgBox "Подпись сформирована",0,"Подпись"
 
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const f_ASCII = 0, f_Unicode = -1, f_Default = -2
'===============================================================================
Dim SignFile
SignFile = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Signatures\" & Signature & ".htm" ' подпись
Dim fso, f, ts
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(SignFile)
Set ts = f.OpenAsTextStream(ForReading, f_ASCII)
 
' Считываем всю подпись
Dim stroka : stroka = ts.ReadAll
 
' Начинаем работать с регулярными выражениями:
Dim regEx, Match, Matches   ' Create variable.
Set regEx = New RegExp   ' Create a regular expression.
regEx.IgnoreCase = True   ' Set case insensitivity.
regEx.Global = True   ' Set global applicability.

regEx.Pattern = "(?:<div[\S\s]{0,}?)(<hr[\S\s]{0,}?)(?:</div>[\S\s]{0,}?)(?:<p[\S\s]{0,}?>)([\S\s]{0,}?)(?:</p>)" ' шаблон поиска:
'(разделитель)(открывающий тэг параграфа)(текст параграфа)(закрывающий тэг параграфа)
Set Matches = regEx.Execute(stroka)
  For Each Match in Matches
   'wscript.echo "HR => " & Match.SubMatches(0)
   'wscript.echo "Телефоны => " & Match.SubMatches(1)
   stroka = replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare)
  Next
ts.Close
 
Set ts = fso.CreateTextFile(SignFile, True, False)
ts.Write(stroka)
ts.Close

End Sub

</script>

</head>
<body>
<p><font face="Arial"><span style="font-size:10pt;">Русский <input type="radio" name="RadioButton" checked>   &nbsp;&nbsp;&nbsp;&nbsp;English <input type="radio" name="RadioButton">
</span></font></p>
<p style="margin-right:100px;"><font face="Arial"><span style="font-size:10pt;">Имя пользователя &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="name_1" size="30">
</span></font></p>
<p><font face="Arial"><span style="font-size:10pt;">Должность &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="title_1" size="30">
</span></font></p>
<p><font face="Arial"><span style="font-size:10pt;">Отделение &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="branch" size="30">
</span></font></p>
<p><font face="Arial"><span style="font-size:10pt;">Телефон &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="tel" value="+7 ()" size="30">
</span></font></p>
<p><font face="Arial"><span style="font-size:10pt;">Факс &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="fax" value="+7 ()" size="30">
</span></font></p>
<p><font face="Arial"><span style="font-size:10pt;"><input type="button" name="button1" value="Сформировать" onClick="Runmod()" style="font-family:Arial; font-size:12;">
</span></font></p>
</body>
</html>

26

Re: VBScript: Вставка линии в документ Word

wooch пишет:

как только я его вставляю в HTML или HTA то снова появляется этот лишний абзац

Самая первая ошибка это "On Error Resume Next"
Отключаем ингнорирование ошибок, запускаем и видим "Ошибка: требуется объект WScript"
Находим тему: "HTA: не найден объект Wscript"

Xameleon пишет:

WScript доступен ТОЛЬКО в WSH.

Однако тут "Администрирование - HTML-приложения" выяснилось что не всё так плохо - меняем WScript.CreateObject на CreateObject и скрипт начинает работать из HTA.

В HTA нельзя напрямую использовать методы и свойства базового класса WScript. Методы CreateObject(<Library>.<Class>), GetObject(<FilePath>), ConnectObject(<Object>, <Prefix>), DisconnectObject(<Object>) вызываются без указания родительского класса, а все остальные методы базового класса не доступны для использования.

P.S. Наверно стоило бы в статье на сайте по HTA добавить информацию по использованию Wscript ...
P.P.S. никогда не задумывался, зачем WScript перед CreateObject, копипаста рулила. Надо будет на досуге с этим разобраться

27

Re: VBScript: Вставка линии в документ Word

2 BeS Yara:

BeS Yara пишет:

P.P.S. никогда не задумывался, зачем WScript перед CreateObject, копипаста рулила. Надо будет на досуге с этим разобраться

В кратце - в WSH можно использовать WScript.CreateObject и просто CreateObject

Разница в том, что обычный CreateObject

принимает следующие аргументы

CreateObject(servername.typename [, location])

servername 
Required. The name of the application providing the object.

typename 
Required. The type or class of the object to create.

location 
Optional. The name of the network server where the object is to be created.

В большинстве случаев второй параметр (location - имя удалённого сервера на котором будет создан объект) не используется. Он опциональный. Поэтому в основном вызов выглядит как

Set obj = CreateObject("servername.typename")

а с сервером

Set obj = CreateObject("servername.typename","\\servername")

подробнее...

В случае с WScript.CreateObject, полное описание функции выглядит так

WScript.CreateObject(strProgID, [strSubPrefix])

strProgID - это тот же servername.typename, что и в обычной функции CreateObject, а вот strSubPrefix нужен для подключения созданного объекта к событиям по префиксу. Он тоже опциональный (необязательный). И его мы тоже используем в крайних случаях.

Set objIE = WScript.CreateObject("InternetExplorer.Application","objIE_")
objIE.Visible = True
boolBrowserRunning = True 
 
Do While objIE.Visible
    WScript.Sleep 500
Loop

Sub objIE_NavigateComplete2(ByVal pDisp, URL)
    WScript.Echo "You just navigated to", URL
End Sub 
 
Sub objIE_OnQuit()
    boolBrowserRunning = False
End Sub

пример взят с www.devguru.com

Подводя итоги:
set o = WScript.CreateObject("servername.typename")
и
set o = CreateObject("servername.typename")
практически одно и тоже

а вот

set o = WScript.CreateObject("servername.typename","\\server")
и
set o = CreateObject("servername.typename","obj_")

уже всё таки разные вещи. )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

28

Re: VBScript: Вставка линии в документ Word

Xameleon, благодарю за разъяснения - исчерпывающе и доходчиво

29 (изменено: BeS Yara, 2011-05-16 16:01:22)

Re: VBScript: Вставка линии в документ Word

Немного причесал HTA-шку(идея утилиты понравилась, решил украсить):


<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>Формирование подписи в Outlook 2003,2007</title>
  <HTA:application 
  applicationName="SuperPodpisMaker"
  border="dialog"
  version="0.1"
  maximizebutton="no"
  minimizebutton="no"
  showintaskbar="no"
  singleinstance="yes"
  scroll="no" 
  icon="c:\WINDOWS\system32\ctfmon.exe"
  />
  <style type="text/css">
  BODY {
    background-color: rgb(0,0,0);
    color: lime;
    border: none;
    margin: 10px 10px 10px 10px;
    font: 12px Arial;
  }
  TABLE {
    background-color: rgb(0,0,0);
    width: "100%";
    border: none;
    margin: 0px 0px 0px 0px;
    font: 14px Arial;
  }
  </style>

<script language="vbscript">
'Процедура формирует подпись и устанавливает ее по умолчанию в Office 2003,2007
Sub Window_OnLoad
  window.resizeTo 380,280
End Sub
Sub Runmod()

'Выбор языка, русский или английский
'On Error Resume Next
If RadioButton(0).Checked Then
strRegard = "С уважением, "
strPhoneT = "Тел.: "
strFaxT = "Факс: "
strQua = "Если у Вас есть претензии к качеству наших услуг, обращайтесь: "
strGreen = "Задумайтесь об окружающей среде, прежде чем распечатать это сообщение на бумаге."
End If
If RadioButton(1).Checked Then
strRegard = "Best regards, "
strPhoneT = "Tel.: "
strFaxT = "Fax: "
strQua = "If you are not entirely satisfied with our service please contact: "
strGreen = "Please Consider the Environment before printing this Email."
End If

strName = name_1.value
strTitle = Title_1.value
strDepartment = Branch.value
strPhone = tel.value
strFax = fax.value
strEmail = "quality@mail.com"
strWeb = "www.mail.com"
strLogo = "\\domain\NETLOGON\greenpeace.gif"
Dim Signature: Signature = "Podpis03"
if 1=1 then
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries

objSelection.Font.Name = "Georgia"
objSelection.Font.Size = "10"
objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Paragraphs.Space1

Set objSelectionLine = objWord.Selection.InlineShapes.AddHorizontalLineStandard
With objSelectionLine
    .Width = 200
    .HorizontalLineFormat.Alignment = 0
End With

objSelection.TypeText strRegard

objSelection.TypeText strName
objSelection.TypeText CHR(11)

objSelection.Font.Italic = True
objSelection.TypeText strTitle
objSelection.TypeText CHR(11)

objSelection.Font.Italic = False
objSelection.Font.Bold = True
objSelection.TypeText strDepartment
objSelection.TypeText CHR(11)

objSelection.Font.Bold = False
objSelection.TypeText strPhoneT & strPhone
objSelection.TypeText CHR(11)

objSelection.TypeText strFaxT & strFax
objSelection.TypeText CHR(11)

objselection.font.color = RGB(0, 0, 255)

Set hyp = objSelection.Hyperlinks.Add(objSelection.Range, strWeb, "", "", strWeb)
hyp.Range.Font.Bold = True
hyp.Range.Font.Size = "10"
hyp.Range.Font.Name = "Georgia"
objSelection.TypeText CHR(11)

objSelection.Font.Name = "Times New Roman"

objSelection.Font.Size = "8"

objSelection.Font.Color = RGB (0, 0, 0)
objSelection.Font.Bold = True
objSelection.TypeText strQua
Set hyp = objSelection.Hyperlinks.Add (objSelection.range, "mailto:" & strEmail, , , strEmail)
hyp.Range.Font.Bold = True
hyp.Range.Font.Color = RGB (0,0,139)
hyp.Range.Font.Size = "8"
hyp.Range.Font.Name = "Times New Roman"
objSelection.TypeText CHR(11)

objSelection.InlineShapes.AddPicture(strLogo)

objSelection.Font.Color = RGB (34, 139, 34)
objSelection.Font.Bold = False
objSelection.TypeText strGreen

Set objSelection = objDoc.Range()

objSignatureEntries.Add Signature, objSelection
objSignatureObject.NewMessageSignature = Signature
objSignatureObject.ReplyMessageSignature = Signature

objDoc.Saved = True
objDoc.Close
objWord.Quit

MsgBox "Подпись сформирована",0,"Подпись"
end if



Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const f_ASCII = 0, f_Unicode = -1, f_Default = -2
'===============================================================================
Dim SignFile
SignFile = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Signatures\" & Signature & ".htm" ' подпись

Dim fso, f, ts
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(SignFile)
Set ts = f.OpenAsTextStream(ForReading, f_ASCII)

' Считываем всю подпись
Dim stroka : stroka = ts.ReadAll

' Начинаем работать с регулярными выражениями:
Dim regEx, Match, Matches   ' Create variable.
Set regEx = New RegExp   ' Create a regular expression.
regEx.IgnoreCase = True   ' Set case insensitivity.
regEx.Global = True   ' Set global applicability.

regEx.Pattern = "(?:<div[\S\s]{0,}?)(<hr[\S\s]{0,}?)(?:</div>[\S\s]{0,}?)(?:<p[\S\s]{0,}?>)([\S\s]{0,}?)(?:</p>)" ' шаблон поиска:
Set Matches = regEx.Execute(stroka)
  For Each Match in Matches
   stroka = replace(stroka, Match.Value, Match.SubMatches(0) & Match.SubMatches(1), 1, -1, vbTextCompare)
  Next
ts.Close

Set ts = fso.CreateTextFile(SignFile, True, False)
ts.Write(stroka)
ts.Close

End Sub
</script>
</head>

<body >
<table>
<tr>
<td>Имя пользователя<td>
<td><input type="text" name="name_1" size="30"><td>
</tr>
<tr>
<td>Должность<td>
<td><input type="text" name="title_1" size="30"><td>
</tr>
<tr>
<td>Отделение<td>
<td><input type="text" name="branch" size="30"><td>
</tr>
<tr>
<td>Телефон<td>
<td><input type="text" name="tel" value="+7 ()" size="30"><td>
</tr>
<tr>
<td>Факс<td>
<td><input type="text" name="fax" value="+7 ()" size="30"><td>
</tr>
</table>
<p>Русский <input type="radio" name="RadioButton" checked>   &nbsp;&nbsp;&nbsp;&nbsp;English <input type="radio" name="RadioButton">
</p>
<p><input type="button" name="button1" value="Сформировать" onClick="Runmod()" >
</p>
</body>
</HTmL>

P.S. Как говорится, на вкус и цвет... Цвета, шрифты, иконку и т.д. менять в самом начале

30

Re: VBScript: Вставка линии в документ Word

Вообщем, огромное вам спасибо, все работает как надо