Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

WORD: come gestire numerazione progressiva?

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

WORD: come gestire numerazione progressiva?

Postdi valle1975 » 29/10/15 11:58

Salve, avrei questa necessità: avendo un documento WORD che devo compilare per degli ordini interni, vorrei far in modo di gestire in modo automatico la numerazione progressiva e il salvataggio tramite macro.
Provo a spiegarmi meglio: il mio documento in alto ha un numero che ad oggi inserisco manualmente, vorrei fare con delle macro, quanto segue:
1) un pulsante per aprire un documento nuovo , che recuperi l'ultimo numero usato da una tabella excel di appoggio, e lo numeri automaticamente a +1.

2) un altro pulsante per salvare il file mettendo nel nome file il numero del documento e scrivendo lo stesso numero nella tabella excel di appoggio.

E' fattibile con Word? In excel si riuscirebbe a gestire, ma purtroppo non posso convertire il mio documento in un foglio excel.
Grazie a tutti..
Valerio
---------------------------------
Win Xp + MS Office 2010 Ita
valle1975
Utente Senior
 
Post: 196
Iscritto il: 27/09/10 16:33

Sponsor
 

Re: WORD: come gestire numerazione progressiva?

Postdi Anthony47 » 01/11/15 23:45

Sulla base di quanto hai detto...
Creati un documento master vuoto, che io ho chiamato VALLE_Master.docm, in cui inserirai queste due macro:
Codice: Seleziona tutto
Sub NewMyDoc()
Dim XlApp, XlWb, myNext As Long
'
Documents.Add Template:= _
    "C:\Users\UTENTE1\AppData\Roaming\Microsoft\Templates\ZCPROT.dotx", _
    NewTemplate:=False, DocumentType:=0               '<<< Il vero path del Modello
ActiveDocument.SaveAs2 FileName:="ZCPIPPO.docx", FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=14
Selection.GoTo What:=wdGoToBookmark, Name:="zcProt"
Selection.Find.ClearFormatting
With Selection.Find
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Set XlApp = CreateObject("excel.application")
XlApp.Visible = True
Set XlWb = XlApp.Workbooks.Open("C:\Users\Utente1\Documents\VALLE_PROT.xlsx")      '<<< Il vero percorso del file XL
myNext = XlWb.sheets("Prot").Range("A65000").End(-4162).Row + 1
cprot = XlWb.sheets("Prot").Range("A" & (myNext - 1)).Value
If IsNumeric(cprot) Then
    cprot = cprot + 1
Else
    cprot = 1
End If
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
Selection.TypeText Text:=Format(cprot, "0000") & " "
With XlWb.sheets("Prot")
    .Cells(myNext, 1).Value = cprot
    .Cells(myNext, 2).Value = Now
    .Cells(myNext, 3).Value = Environ("UserName")
End With
'
XlWb.Close True
XlApp.Quit
'
Selection.HomeKey Unit:=wdStory
ActiveDocument.Save
End Sub

Codice: Seleziona tutto
Sub SalvaProt()
'
myPath = ThisDocument.Path & "\"        'Usare un eventuale diverso Path
Documents("ZCPIPPO.DOCX").Activate
Selection.GoTo What:=wdGoToBookmark, Name:="zcProt"
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
'
If IsNumeric(Selection.Text) Then
    ActiveDocument.SaveAs2 (myPath & Selection.Text)
Else
    MsgBox ("il campo Protocollo non contiene un numero: " & vbCrLf & Selection.Text _
        & vbCrLf & "Salvare il fil manualmente prima di continuare")
End If
'
End Sub

Poi ti crei un "Modello di Word" che sara' usato per creare il tuo "nuovo documento"; mettici le informazioni che vuoi, e inserisci un "Segnalibro" che chiamerai "zcPROT" nella posizione in cui vuoi poter inserire la numerazione progressiva. Salva il modello come zcPROT.dotx nella posizione dei modelli (che credo sia C:\Users\UTENTE\AppData\Roaming\Microsoft\Templates)

Quindi crea il file Excel che chiamerai VALLE_Prot.xlsx, contenente un foglio Prot col seguente layout:
Immagine
hosting immagini
I tre numeri sono stati assegnati durante le mie prove, in quelle date e a quegli Utenti (il campo Data in realta' contiene anche l'ora, visibile se cambi la formattazione della cella).

Quando vuoi creare un nuovo documento di quel tipo allora, partendo da documento VALLE_Master, mandi in esecuzione la Sub NewMyDoc; ti verra' creato un file di nome ZCPIPPO.docx, contenente la numerazione progressiva su 4 cifre prelevata dal file VALLE_Prot.xlsx che verra' contemporaneamente aggiornato.

Quando vuoi salvare col nome definitivo dovrai lanciare la Sub SalvaProt.

Pero' io, per evitare equivoci col file ZCPIPPO.docx eseguirei subito in coda alla Sub NewMyDoc anche la Sub SalvaProt in modo da vedere direttamente il file XXXX.docx; se ti quadra, basta che in fondo alla Sub NewMyDoc, prima di End Sub, aggiungi la riga "Call SalvaProt" (senza virgolette).

Probabilmente si puo' meglio automatizzare, ad esempio inserendo l'esecuzione delle macro direttamente dalla Barra di Accesso Rapido; ma non essendo un utente Word particolarmente furbo lo lascio aperto per altri contrbuti.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: WORD: come gestire numerazione progressiva?

Postdi valle1975 » 02/11/15 09:22

Grandissima spiegazione e risposta.... Mille grazie ancor prima di averla provata...
Sei insostituibile... ti aggiorno appena risco a metterci le mani e capirla... :D
Valerio
---------------------------------
Win Xp + MS Office 2010 Ita
valle1975
Utente Senior
 
Post: 196
Iscritto il: 27/09/10 16:33


Torna a Applicazioni Office Windows


Topic correlati a "WORD: come gestire numerazione progressiva?":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti