Post by Pippo"Maurizio Borrelli" ha scritto nel
[...]
Post by Pippouhm..pero', debbo anche verificare che, il documento "attivo", non e' un
qualsiasi documento, ma e' *proprio* quello basato sul mio *modello* !!!
Giusto?
..poi.. dove piazzare la suddetta istruzione? Evento "Close" ?
[...]
Ciao Pippo.
Concludo -- per modo di dire perche' ci saranno ancora tante cose da
dire -- postando un abbozzo essenziale di uno dei modi in cui si puo'
gestire una numerazione automatica (del protocollo, numero e data)
prevedendo anche la questione che hai sollevato, ovvero quella della
"trasportabilita'" del... numero. Suppongo che tu abbia ipotizzato una
situazione in cui *una sola persona* vorrebbe proseguire, per esempio
col portatile, un lavoro cominciato in ufficio ed abbia quindi
l'esigenza di *spostare* l'"oggetto" che contiene il numero da
incrementare. E viceversa, ovviamente. Situazione questa in cui l'uso di
una chiave di registro non sarebbe comoda. Ho quindi tolto il contatore
dal registro e l'ho incorporato nel modello, sotto forma di proprieta
personalizzata del documento. Questa stessa soluzione potrebbe essere
efficace anche nell'altro caso di cui si e' parlato, quello della
"multiutenza" o "gruppo di lavoro", ipotizzando un modello da salvare
appunto nella cartella "Modelli workgroup", ma questa ultima soluzione
non ho ancora potuto verificarla.
Ecco quindi il codice.
Proprieta' personalizzate del Modello (Custom Document Properties)
Nome: ProtNumero
Tipo: Numero
Valore: 0
Nome: ProtData
Tipo: Data
Valore: 1/1/2007
' Preventivi.dot(m)
' modAutoMacros - Module
Option Explicit
Public Const gcstrProjectName = "Preventivi"
Public Const gcstrCDPProtNumero = "ProtNumero"
Public Const gcstrCDPProtData = "ProtData"
Public Sub AutoNew()
'MsgBox "AutoNew", , gcstrProjectName
With ThisDocument
If .WordApp Is Nothing Then
Set .WordApp = .Application
End If
End With
End Sub
Public Sub AutoClose()
'MsgBox "AutoClose", , gcstrProjectName
With ThisDocument
If .OnQuit Then
Set .WordApp = Nothing
End If
End With
End Sub
' Preventivi.dot(m)
' ThisDocument - Document
Option Explicit
Public WithEvents WordApp As Word.Application
Private mblnOnQuit As Boolean
Public Property Get OnQuit() As Boolean
OnQuit = mblnOnQuit
End Property
Private Sub Document_New()
On Error GoTo ErrorHandler
'MsgBox "Document_New", , gcstrProjectName
'Stop
With Me.Application.ActiveDocument
With .CustomDocumentProperties
.Item(gcstrCDPProtNumero).Value = 0
.Item(gcstrCDPProtData).Value = Date
End With
.Fields.Update
End With
Selection.EndKey Unit:=wdStory
ExitProcedure:
Exit Sub
ErrorHandler:
Debug.Print gcstrProjectName; ":Document_New"
With Err
Debug.Print "ERR#"; Format$(.Number); " "; .Description
End With
Resume ExitProcedure
End Sub
Private Sub WordApp_DocumentBeforeSave(ByVal Doc As Word.Document _
, ByRef SaveAsUI As Boolean _
, ByRef Cancel As Boolean)
On Error GoTo ErrorHandler
Dim objTemplate As Word.Template
Dim lngProtNum As Long
Dim dtmProtData As Date
Debug.Print gcstrProjectName; ":WordApp_DocumentBeforeSave"
'Stop
If SaveAsUI = False Then Exit Sub
If Doc.AttachedTemplate.FullName <> ThisDocument.FullName _
Then Exit Sub
With Doc
With .AttachedTemplate
With .CustomDocumentProperties
With .Item(gcstrCDPProtNumero)
lngProtNum = .Value + 1
.Value = lngProtNum
Doc.CustomDocumentProperties _
.Item(gcstrCDPProtNumero) = .Value
End With
With .Item(gcstrCDPProtData)
dtmProtData = Date
.Value = dtmProtData
Doc.CustomDocumentProperties _
.Item(gcstrCDPProtData) = .Value
End With
End With
.Save
End With
With .CustomDocumentProperties
.Item(gcstrCDPProtNumero).Value = lngProtNum
.Item(gcstrCDPProtData).Value = dtmProtData
End With
.Fields.Update
End With
Cancel = True
With Me.Application.Dialogs(wdDialogFileSaveAs)
.Name = Format$(dtmProtData, "yyyy") _
& "-" & Format$(lngProtNum, "0000")
.Show
End With
ExitProcedure:
Set objTemplate = Nothing
Exit Sub
ErrorHandler:
Debug.Print gcstrProjectName; ":WordApp_DocumentBeforeSave"
With Err
Debug.Print "ERR#"; Format$(.Number); " "; .Description
End With
Resume ExitProcedure
End Sub
Private Sub WordApp_Quit()
mblnOnQuit = True
End Sub
--
Ciao :o) Microsoft MVP (Excel)
Maurizio https://mvp.support.microsoft.com/profile/Maurizio.Borrelli
-------- Spazio personale di Maurizio Borrelli
?SPQR(C) http://spdmb.spaces.live.com
X RIO - Risorse in italiano per gli utenti di office
-------- http://www.riolab.org