La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Salve.
Sono un nuovo utente e neofita di excel che amomolto.
Vorrei sapere se esiste la possibilità una volta creato un semplice database con excel (per es in A1 Cognome, in A2 Nome ed in A3 indirizzo) avere un modo per ottenere automaticamente in A4, ma senza l'uso del VBA (che non conosco), la creazione e quindi il link ad un file di word denominato con il cognome e nome presenti nella stessa riga.
Grazie
Ciao
A4=A1 & A2 & A3
oppure
A4= CONCATENA(A1;A2;A3)
Ciao,
Mario
Ti ringrazio ma.... io intendevo qualcosa in più
Io vorrei utilizzare un comando (o una macro) che mi creasse automaticamente il file di word con quelle caratteristiche.
Spero di essere stato più chiaro.
Buongiorno Aurelio.
Non è banale. Smanettando un po' si potrebbe fare, ma temo tu debba passare alle macro.
Comunque mancano diverse informazioni.
- In quale posizione vuoi costruire il file di Word? Il path dove e come lo intendi definire?
- Come comportarsi in caso di file con stesso nome?
- Il file deve essere vuoto o deve contenere informazioni già in fase di creazione?
Chissà quante altre domande usciranno in fase di sviluppo.
Ho creato in c:\ una cartella denominata “DB”. In questa vi è il mio file Excel ed una sottocartella denominata “DATI” in cui inserire i files di Word per cui questi saranno in C:\DB\DATI.
AL momento in questa sottocartella vi è un file di word vuoto che richiamo con una (modestissima) macro e che poi salvo manualmente con il nome che mi interessa ed infine creo un collegamento in un’altra colonna del mio file di Excel. Queste ultime sono le operazioni che vorrei automatizzare.
Per quanto concerne eventuale omonimia sarebbe bello inserire oltre a cognome e nome anche la data di nascita. Ma sapendo che excel trasforma la data in numero non mi è di aiuto pertanto nel file allegato a mò di esempio ho concatenato al cognome e nome la città. Ciò potrebbe parzialmente risultarmi utile. Certo sarebbe meglio la data di nascita, anche solo l’anno…
Infine attualmente uso un file di word vuoto in cui manualmente inserisco le generalità. Ma “aspiro” ad adottare un modello con queste già presenti automaticamente..
Ti ringrazio
Ho sviluppato una routine abbastanza rudimentale ma funziona. Con alcune avvertenze:
1. costruisce un file di Word vuoto in cartella definita (in questo caso, in cella Z1 del foglio) con nome CognomeNome.dd.mm.yyyy.Comune;
2. CognomeNome.dd.mm.yyyy.Comune sono relativi alla cella attiva (quella dove è posizionato il cursore);
3. definizione e impostazione di Word prende molto tempo (8"/10");
4. dopo il salvataggio il file verrà chiuso (nel caso, questa istruzione si può eliminare)
4. IMPORTANTISSIMO: prima di procedere è necessario attivare Microsoft Word 16.0 Object Library:
aprire l'editor (Alt+F11) e impostare questo:
> Strumenti
> Riferimenti
> spuntare Microsoft Word 16.0 Object Library + OK
Senza questo non funzionerà.
Dopodiché sarà possibile incollare la routine e farla girare.
Questa la routine:
Option Explicit
Sub DocxDaXlsx()
Dim WordApp As Word.Application
Dim WPath As String
Dim Xdta As String, DD As String, MM As String, YYYY As String
Dim Xar As Long
'
Xar = ActiveCell.Row
If Xar < 3 Or IsEmpty(Cells(Xar, 1)) = True Then
MsgBox ("Cursore posizionato su cella non valida")
Exit Sub
End If
'scompatta data
Xdta = Cells(Xar, 4)
DD = "." & Left(Xdta, 2) & "."
MM = Mid(Xdta, 4, 2) & "."
YYYY = Right(Xdta, 4) & "."
'
'costruisce path e nome file word
WPath = Range("Z1") & Cells(Xar, 2) & Cells(Xar, 3) & DD & MM & YYYY & Cells(Xar, 5) & ".docx"
'
'imposta tutto quello che serve a Word
Set WordApp = New Word.Application
WordApp.Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
WordApp.Visible = True
'
'salva e chiude il file Word
WordApp.ActiveDocument.SaveAs Filename:=WPath
'
'istruzione di chiusura del file. Eliminare se si vuole mantenere il file docx aperto
WordApp.ActiveDocument.Application.Quit
'
'rilascia memoria
Set WordApp = Nothing
WPath = Empty
DD = Empty
MM = Empty
YYYY = Empty
Xdta = Empty
Xar = Empty
End Sub
Per l'esecuzione sono sufficienti le colonne BCDE.
Il Path (C:\DB\DATI) è in cella Z1 ma si può cablare direttamente nella Sub
(WPath = Range("Z1") & ... = WPath = "C:\DB\DATI\" & ...)
In ogni caso (cella o cablato) la stringa deve concludersi con "\".
Buon lavoro.
Ti ringrazio per il tuo suggerimento e per il tempo che hai impiegato per me.
Nonostante quanto hai scritto sia ottimamente dettagliato ho trovato molte difficoltà per cui ho deciso di riprovarci dopo che avrò imparato qualche minima nozione di VBA.
Conservo preziosamente la tua idea sperando di poterla attivare non appena avrò imparato qualcosa...
Di nuovo grazie e buon weekend.
Aurelio
Secondo, me se la cosa ti serve con urgenza, in questa attività c'è poco da rimuginare. La routine è già pronta così come si vede. E' solo da copiare in un modulo (click dx su VbaProject, inserisci Modulo), visibili dopo aver avviato l'editor (Alt+F11), aver impostato Microsoft Word 16.0 Object Library come spiegato più sopra e aver impostato il percorso della cartella in cui salvare il docx in cella Z1. Naturalmente il lavoro dovrà essere salvato come "Cartella di lavoro con attivazione Macro di Excel (*.xlsm)".
Comunque la discussione è risolta e ti chiedo di segnarla come "risolta". Grazie, alla prossima.
Risolta, Grazie