Вставка textbox при открытии документа Word без сохранения изменений - VB
Формулировка задачи:
Написал скрипт, который при открытии файлов *.doc(x) - "только чтение", вставляет textbox с данными из Oracle database по средствам OO4O.
После того как textbox объявился в файле, который в режиме "только чтение" и никаких более изменений не производилось,
то при закрытии файла он предлагает сохранить изменения.
Как избежать события "сохранить изменения" при закрытии файла, если производилась только вставка textbox?
Собственно скрипт:
После того как textbox объявился в файле, который в режиме "только чтение" и никаких более изменений не производилось,
то при закрытии файла он предлагает сохранить изменения.
Как избежать события "сохранить изменения" при закрытии файла, если производилась только вставка textbox?
Собственно скрипт:
Решение задачи: «Вставка textbox при открытии документа Word без сохранения изменений»
textual
Листинг программы
<font color="blue">Sub</font> AddColontitul()
<font color="blue">Dim</font> oraSession <font color="blue">As</font> <font color="blue">Object</font>
<font color="blue">Dim</font> oraDatabase <font color="blue">As</font> <font color="blue">Object</font>
<font color="blue">Dim</font> OraDynaset <font color="blue">As</font> OraDynaset
<font color="blue">Dim</font> OraFields <font color="blue">As</font> OraFields
<font color="blue">Dim</font> FieldRec <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> FieldCnt <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> strPath <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> ldDoc <font color="blue">As</font> Document
<font color="blue">Dim</font> strDocNameWithoutExt <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> strDocName1, strDocName2, strDocID <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> strDocName3, strDocName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> lines() <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> text1 <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> Foot <font color="blue">As</font> HeaderFooter
<font color="blue">Dim</font> mytxtbox <font color="blue">As</font> Shape
<font color="blue">Set</font> ldDoc = ActiveDocument
<font color="#00AA00">'-----------------------Get FileName without extention----------------</font>
strDocNameWithoutExt = Left(ldDoc.<font color="blue">Name</font>, InStr(<font color="darkblue"><b>1</b></font>, ldDoc.<font color="blue">Name</font>, <font color="teal">"."</font>) - <font color="darkblue"><b>1</b></font>)
MsgBox strDocNameWithoutExt
<font color="#00AA00">'------------------------Get only ID from FileName--------------------</font>
strDocName1 = InStr(<font color="darkblue"><b>1</b></font>, StrReverse(strDocNameWithoutExt), <font color="teal">"("</font>)
strDocName2 = Right(strDocNameWithoutExt, strDocName1 - <font color="darkblue"><b>1</b></font>)
strDocID = Trim(Left(strDocName2, InStr(<font color="darkblue"><b>1</b></font>, strDocName2, <font color="teal">"_"</font>) - <font color="darkblue"><b>1</b></font>))
<font color="#00AA00">'----------------------------Get only FileName------------------------</font>
strDocName3 = Right(strDocNameWithoutExt, strDocName1 - <font color="darkblue"><b>0</b></font>)
strDocName = Trim(Replace(strDocNameWithoutExt, strDocName3, <font color="teal">""</font>))
<font color="#00AA00">'------------------------Oracle Connection parameter------------------</font>
<font color="blue">Set</font> oraSession = CreateObject(<font color="teal">"OracleInProcServer.XOraSession"</font>)
<font color="blue">Set</font> oraDatabase = oraSession.OpenDatabase(<font color="teal">"landocs2.keramin.int"</font>, <font color="teal">"otchetman/loop"</font>, <font color="darkblue"><b>0</b></font>)
<font color="#00AA00">'MsgBox <font color="teal">"Connected to "</font> & oraDatabase.Connect & <font color="teal">"@"</font> & oraDatabase.DatabaseName</font>
<font color="#00AA00">'------------------------Check type document--------------------------</font>
oraDatabase.Parameters.Add <font color="teal">"var1"</font>, strDocID, <font color="darkblue"><b>1</b></font>
<font color="blue">Set</font> OraDynaset = oraDatabase.CreateDynaset(<font color="teal">" SELECT count(ver."</font><font color="teal">"ID"</font><font color="teal">") as Cnt "</font> _
& <font color="teal">"FROM dbo.ldmail mail, DBO.LDERC erc, DBO.ldversion ver "</font> _
& <font color="teal">"WHERE erc."</font><font color="teal">"ID"</font><font color="teal">" = mail."</font><font color="teal">"ERCID"</font><font color="teal">" AND ver."</font><font color="teal">"ID"</font><font color="teal">" = :var1 "</font> _
& <font color="teal">"AND erc."</font><font color="teal">"ID"</font><font color="teal">" = ver."</font><font color="teal">"DocID"</font><font color="teal">" "</font> _
& <font color="teal">"AND mail."</font><font color="teal">"MailStateID"</font><font color="teal">" in (2,4,6) AND mail."</font><font color="teal">"MailTypeID"</font><font color="teal">" = 340468 "</font> _
& <font color="teal">"AND ver."</font><font color="teal">"VerN"</font><font color="teal">" in (select max(ver."</font><font color="teal">"VerN"</font><font color="teal">") FROM dbo.ldmail mail, DBO.LDERC erc, DBO.ldversion ver "</font> _
& <font color="teal">"WHERE erc."</font><font color="teal">"ID"</font><font color="teal">" = mail."</font><font color="teal">"ERCID"</font><font color="teal">" AND ver."</font><font color="teal">"ID"</font><font color="teal">" = :var1 "</font> _
& <font color="teal">"AND erc."</font><font color="teal">"ID"</font><font color="teal">" = ver."</font><font color="teal">"DocID"</font><font color="teal">" "</font> _
& <font color="teal">"AND mail."</font><font color="teal">"MailStateID"</font><font color="teal">" in (2,4,6) AND mail."</font><font color="teal">"MailTypeID"</font><font color="teal">" = 340468) "</font>, <font color="darkblue"><b>0</b></font>&)
<font color="blue">Set</font> OraFields = OraDynaset.Fields
FieldCnt = OraFields(<font color="teal">"Cnt"</font>).Value
<font color="#00AA00">'---------------------Main condition for working macros---------------</font>
<font color="blue">If</font> FieldCnt > <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
<font color="#00AA00">'--------------------Execute sql-function-----------------------------</font>
<font color="blue">Set</font> OraDynaset = oraDatabase.CreateDynaset(<font color="teal">"select dbo.LDF_LDDOC_TYPE( :var1 ) as vRec from dual"</font>, <font color="darkblue"><b>0</b></font>&)
<font color="#00AA00">'----------------------Get returned value-----------------------------</font>
<font color="blue">Set</font> OraFields = OraDynaset.Fields
FieldRec = OraFields(<font color="teal">"vRec"</font>).Value
<font color="#00AA00">'---------------------Reaction by return value------------------------</font>
<font color="blue">If</font> FieldRec = <font color="darkblue"><b>1</b></font> <font color="blue">Then</font>
Stat = <font color="teal">"Согласовано"</font>
<font color="blue">ElseIf</font> FieldRec = <font color="darkblue"><b>2</b></font> <font color="blue">Then</font>
Stat = <font color="teal">"Не согласовано"</font>
<font color="blue">Else</font>
Stat = <font color="teal">"Ошибка!"</font>
<font color="blue">End</font> <font color="blue">If</font>
lines() = Split(Left(strDocName, <font color="darkblue"><b>100</b></font>) & <font color="teal">" "</font> & Stat, vbCrLf)
text1 = Trim(lines(i))
<font color="#00AA00">'-----------------------Create Footer---------------------------------</font>
<font color="blue">With</font> ldDoc.Sections(<font color="darkblue"><b>1</b></font>).Footers(wdHeaderFooterPrimary)
<font color="blue">With</font> .Range
.Text = text1
<font color="blue">With</font> .Font
.Color = wdColorBlack
.<font color="blue">Name</font> = <font color="teal">"Times New Roman"</font>
.Size = <font color="darkblue"><b>9</b></font>
<font color="blue">End</font> <font color="blue">With</font>
<font color="blue">End</font> <font color="blue">With</font>
<font color="blue">End</font> <font color="blue">With</font>
<font color="#00AA00">'-----------------------If main condition is False--------------------</font>
<font color="blue">Else</font>
MsgBox <font color="teal">"По документу нет согласований"</font>
<font color="blue">End</font> <font color="blue">If</font>
ldDoc.Saved = True
<font color="blue">End</font> <font color="blue">Sub</font>