Вставка textbox при открытии документа Word без сохранения изменений - VB

Узнай цену своей работы

Формулировка задачи:

Написал скрипт, который при открытии файлов *.doc(x) - "только чтение", вставляет textbox с данными из Oracle database по средствам OO4O.
После того как 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>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы