Condividi:        

Macro crea file word rinominato come dato in specifica cella

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

Macro crea file word rinominato come dato in specifica cella

Postdi systemcrack » 14/08/24 11:00

Buongiorno,
sono sul finire dello sviluppo delle idee riguardo il file su cui sto lavorando per protocollare le pratiche dell'ufficio.
Il file protocollo.xlms è composto da più fogli: SCHEDA, REGISTRO,CHIUSE, SCHEDA TECNICA.

Nel foglio SCHEDA sto aggiungendo un pulsante collegato ad una macro che crea e apre un file word da compilare.
Di seguito riporto la macro:
Codice: Seleziona tutto
Sub IstruzioniDiCarico()
 Set WordApp = CreateObject("Word.application")
 Set WordDoc = WordApp.documents.Add
 WordApp.Visible = True
 WordApp.Application.Activate
End Sub


Ora vorrei che il file word che si va a creare fosse rinominato come il dato contenuto nella cella D5 del foglio SCHEDA, (che è il nr di pratica) e che quando lo si salva/chiude, finisse direttamente in una cartella prescelta.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Sponsor
 

Re: Macro crea file word rinominato come dato in specifica c

Postdi Anthony47 » 14/08/24 12:14

Salva il file appena creato nel percorso giusto e col nome giusto.
Questo non impedirebbe all'utente di salvare successivamente il file con nome o in percorso diverso, ma se il personale e' istruito l'errore si riduce. Del tipo:
Codice: Seleziona tutto
Sub IstruzioniDiCarico()
Dim WordApp As Object, mioPath As String
'
mioPath = "\\Server\Percorso\Percorso\"
'
 Set WordApp = CreateObject("Word.application")
 Set WordDoc = WordApp.documents.Add
 WordApp.Visible = True
 WordApp.documents.Save (mioPath & Replace(ThisWorkbook.Sheets("SCHEDA").Range("D5").Value, "/", "#", , , vbTextCompare) & ".docx")
 WordApp.Application.Activate
End Sub

Poiche' ho visto che talvolta il "numero di pratica" contiene caratteri non compatibili con il formato del nome file (esempio: I4S0297/03/04/05/06/07/08/09/10) il codice rimuove il carattere "/" dal numero pratica sostituendolo con "#"; se ci sono potenzialmente altri caratteri illegali devi eliminare anche quelli
Avatar utente
Anthony47
Moderatore
 
Post: 19435
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro crea file word rinominato come dato in specifica c

Postdi systemcrack » 14/08/24 13:46

Anthony47 ha scritto:Salva il file appena creato nel percorso giusto e col nome giusto.
Questo non impedirebbe all'utente di salvare successivamente il file con nome o in percorso diverso, ma se il personale e' istruito l'errore si riduce. Del tipo:
Codice: Seleziona tutto
Sub IstruzioniDiCarico()
Dim WordApp As Object, mioPath As String
'
mioPath = "\\Server\Percorso\Percorso\"
'
 Set WordApp = CreateObject("Word.application")
 Set WordDoc = WordApp.documents.Add
 WordApp.Visible = True
 WordApp.documents.Save (mioPath & Replace(ThisWorkbook.Sheets("SCHEDA").Range("D5").Value, "/", "#", , , vbTextCompare) & ".docx")
 WordApp.Application.Activate
End Sub

Poiche' ho visto che talvolta il "numero di pratica" contiene caratteri non compatibili con il formato del nome file (esempio: I4S0297/03/04/05/06/07/08/09/10) il codice rimuove il carattere "/" dal numero pratica sostituendolo con "#"; se ci sono potenzialmente altri caratteri illegali devi eliminare anche quelli


Ho dato un occhiata e fatto un esperimento con i tuoi codici che ho adattato al mio caso così:
Codice: Seleziona tutto
Sub IstruzioniDiCarico()
 Dim WordApp As Object, mioPath As String
'
mioPath = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE\ISTRUZIONI\"
'
 Set WordApp = CreateObject("Word.application")
 Set WordDoc = WordApp.documents.Add
 WordApp.Visible = True
 WordApp.documents.Save (mioPath & Replace(ThisWorkbook.Sheets("SCHEDA").Range("D5").Value, "/", "-", , , vbTextCompare) & ".docx")
 WordApp.Application.Activate
End Sub

ora quando provo a generare il file word si apre, ma poi come lo chiudo?

Se chiudo e rispondo Si alla domanda se salvare il file word, mi apre la finestrella del salvataggio, ma come prima, se invece rispondo No, ricevo un errore Run-time13 ed il debug mi indica la seguente riga:
Codice: Seleziona tutto
WordApp.documents.Save (mioPath & Replace(ThisWorkbook.Sheets("SCHEDA").Range("D5").Value, "/", "-", , , vbTextCompare) & ".docx")

Ho provato a inserire il link alla cartella anche nell'altro modo che dicevi in un altro post,
Codice: Seleziona tutto
mioPath = "\\FILESERVER\cartella\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE\ISTRUZIONI\"

pensando fosse quello il problema, ma no. Immagine In teoria cliccando sul dischetto dovrebbe salvarsi sul file "già creato", ma guardando in cartella il file non viene salvato.. che stia sbagliando qualche cosa io Immagine

Di seguito uno screen del file word aperto tramite macro
Immagine

Come da immagine l'intestazione del file riporta Documento2, ma in teoria già a questo punto dovrebbe chiamarsi con il dato di D5.. o sto dimenticando qualche cosa?
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro crea file word rinominato come dato in specifica c

Postdi systemcrack » 14/08/24 14:47

Ti allego il file modificato dopo tutti i tuoi consigli e l'aggiunta del nuovo codice per il file word.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro crea file word rinominato come dato in specifica c

Postdi FRIEDRICH » 18/08/24 10:15

Ciao a tutti, prova così:
Codice: Seleziona tutto
Sub IstruzioniDiCarico()
'https://www.pc-facile.com/forum/viewtopic.php?f=26&t=113413
   
Dim WordApp As Object, WordDoc As Object, mioPath As String
   
mioPath = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE\ISTRUZIONI\"  '<<=== da adattare

Set WordApp = CreateObject("word.Application")

WordApp.Visible = True
Set WordDoc = WordApp.Documents.Add

WordDoc.SaveAs (mioPath & Replace(ThisWorkbook.Sheets("SCHEDA").Range("D5").Value, "/", "-", , , vbTextCompare) & ".docx")
WordApp.Application.Activate

End Sub
Avatar utente
FRIEDRICH
Utente Junior
 
Post: 36
Iscritto il: 09/07/17 17:14

Re: Macro crea file word rinominato come dato in specifica c

Postdi systemcrack » 19/08/24 08:09

FRIEDRICH ha scritto:Ciao a tutti, prova così:
Codice: Seleziona tutto
Sub IstruzioniDiCarico()
'https://www.pc-facile.com/forum/viewtopic.php?f=26&t=113413
   
Dim WordApp As Object, WordDoc As Object, mioPath As String
   
mioPath = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE\ISTRUZIONI\"  '<<=== da adattare

Set WordApp = CreateObject("word.Application")

WordApp.Visible = True
Set WordDoc = WordApp.Documents.Add

WordDoc.SaveAs (mioPath & Replace(ThisWorkbook.Sheets("SCHEDA").Range("D5").Value, "/", "-", , , vbTextCompare) & ".docx")
WordApp.Application.Activate

End Sub


SIII FUNZIONA!!! Grande FRIEDRICH!!!
Grazie tantissimo.. il migliore dei rientri al lavoro sebbene piova a dirotto.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro crea file word rinominato come dato in specifica c

Postdi FRIEDRICH » 19/08/24 09:38

Un saluto a tutti, :)
grazie per il riscontro, sono contento di esserti stato di aiuto.
Avatar utente
FRIEDRICH
Utente Junior
 
Post: 36
Iscritto il: 09/07/17 17:14

Re: Macro crea file word rinominato come dato in specifica c

Postdi systemcrack » 19/08/24 10:12

FRIEDRICH ha scritto:Un saluto a tutti, :)
grazie per il riscontro, sono contento di esserti stato di aiuto.

Non sai quanto..!
Era l'ultimo tassello che mancava per decretare lo sviluppo terminato (per il momento).
Ora posso iniziare ad usare e testare il file davvero. ;)

Nei prossimi giorni, studierò meglio il "tuo codice" per vedere e capire in cosa differisce da quello passatomi da Anthony.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro crea file word rinominato come dato in specifica c

Postdi Anthony47 » 20/08/24 00:24

Allora...
Ho visto che hai trovato la soluzione alla tua domanda con il l'intuizione di FRIEDRICH.

Però...
Premetto (A) che il mio Office 365 (la versione che usi anche tu, vero?) a 64 bit (non so se e' la tua versione) funziona regolarmente (e se tutto regolare, la directory esiste, il nome file e' corretto, salva il documento col nome iniziale, SE WORD NON E' GIA' APERTO; altrimenti (se word e' gia' aperto) va in run-time error.
Ma questo non sarebbe un problema, perche' e' abbastanza facile lavorare con una sessione Word gia' aperta, evitando crearne una nuova.

Quello che temo pero' e' che sarà difficile lavorare in modo pulito e senza interferenze se la tua automazione e' in uso a piu' persone. Per gestire tutto in modo pulito bisognerebbe eliminare completamente l'interfaccia utente su Word (B) e costringere l'utente a lavorare solo con macro di Excel; ma eseguire B col rischio (vedi A) che quel Word sia in uso per altre cose mi sembra un attentato alla salute del PC.

Per questo il mio suggerimento e' di non aprire word, ma di creare un documento pdf partendo da Excel. Cioe':
-ti prepari un foglio excel, che magari tieni normalmente nascosto, con le intestazioni delle informazioni che vanno poi compilate
-all'occorrenza scopri e selezioni il foglio; cancelli il contenuto da riga 2 in avanti (nell'ipotesi che Riga 1 siano le intestazioni) e lasci all'utente compilare le informazioni
-un pulsante gia' presente sul foglio avvia la macro che salva il contenuto del foglio in formato pdf, usando il percorso e il nome file che ti servono. Il codice della macro:
Codice: Seleziona tutto
Sub SalvaENascondi()
Dim myPath, FFName As String
'
myPath = "D:\DDownloads\"                  '<<<<< Il tuo Percorso
FFName = myPath & Replace(Sheets("SCHEDA").Range("D5").Value, "/", "-", , , vbTextCompare)
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FFName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
ActiveSheet.Visible = 0         '0=Nascosto; -1=Visibile
'Sheets("NomeSheet").Range("IndirizzoCella").Hyperlinks.Delete
'Sheets("NomeSheet").Hyperlinks.Add Anchor:=Range("IndirizzoCella"), Address:=FFName
End Sub

Se devi inserire questo file come hyperlink in qualche cella puoi ispirarti alle due righe in fondo che ora sono disabilitate.
Valuta con calma quanto detto, nell'ipotesi che l'uso del pdf sia compatibile col tuo processo...
Avatar utente
Anthony47
Moderatore
 
Post: 19435
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro crea file word rinominato come dato in specifica c

Postdi systemcrack » 20/08/24 16:20

Allora.. Anthony.. ho letto questo tuo commento in mezzo alla confusione dell'ufficio, ma credo dovrò rileggerlo un'altra volta. :lol:
Ad ogni modo per quel che ho capito è necessario che vi sia la possibilità che i miei colleghi (dello stesso ufficio) possano variare il file word per aggiornare le istruzioni. Una volta che la pratica viene registrata, chi registra non la apre più e diventa di sola consultazione (a meno che non si debbano appunto aggiungere istruzioni). Per il momento sembra funzionare bene, ma sto monitorando il comportamento del file per vedere che non s'imbizzarrisca.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40

Re: Macro crea file word rinominato come dato in specifica c

Postdi Anthony47 » 20/08/24 21:01

Se il file che crei deve essere compilato e salvato, poi magari aperto e modificato successivamente, allora il formato pdf non va bene per voi; puoi quindi risparmiarti di capire cosa avevo suggerito.
Controlla solo che se Word fosse gia' aperto allora il codice Set WordApp = CreateObject("word.Application") non vada in errore
Avatar utente
Anthony47
Moderatore
 
Post: 19435
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro crea file word rinominato come dato in specifica c

Postdi systemcrack » 21/08/24 20:35

Anthony47 ha scritto:Se il file che crei deve essere compilato e salvato, poi magari aperto e modificato successivamente, allora il formato pdf non va bene per voi; puoi quindi risparmiarti di capire cosa avevo suggerito.
Controlla solo che se Word fosse gia' aperto allora il codice Set WordApp = CreateObject("word.Application") non vada in errore

D'accordo.. domani farò un test.
Grazie del suggerimento.. come sempre.
Avatar utente
systemcrack
Utente Senior
 
Post: 454
Iscritto il: 27/07/17 09:40


Torna a Applicazioni Office Windows


Topic correlati a "Macro crea file word rinominato come dato in specifica cella":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti