Ok, il lavoro e' stato duro e lungo ma alla fine ce l'ho fatta grazie al vostro aiuto.
Come avevate detto voi, ho fatto svolgere a word il lavoro di unione dei file tramite la macro automatica che mi hai suggerito. Per quanto riguarda excel ho utilizzato la
macro suggerita da Avatar3; questa macro l'ho resa automatica all'avvio in modo tale che, all'apertura del foglio di lavoro, la macro leggera' tutti i file contenuti nella cartella da me indicata e mi restituira' l'elenco dei file comodamente in una cella; a quest'ultima ho anche applicato una convalida di dati dirottata in un'altro foglio di lavoro per avere un menu a tendina comodo per scegliere il file che mi interessa e poiche' l'elenco di file si apriva sul foglio 2 (e io avevo bisogno che chi apriva il progetto si trovasse di fronte al menu' a tendina gia pronto), ho aggiunto alla macro dell'elenco dei file l'istruzione:
- Codice: Seleziona tutto
Sheets("Foglio1").Select
Range("A2").Select
per tornare al foglio 1 alla cella A2 dove compare il menu a tendina.
Per quanto riguarda la macro per inserire i file scelti dal menu a tendina di excel nella cartella dalla quale la macro automatica di word si va a prendere i file per creare il documento, ho modificato una macro trovata sul web in questo modo:
- Codice: Seleziona tutto
Sub CopiaTuttiFiles()
Dim eZio As Object
Set eZio = CreateObject("Scripting.FileSystemObject")
eZio.CopyFile Range("A2").Value, "C:\Users\Andrea\Desktop\VERG\TEMPDOC\", True
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
WordApp.Documents.Open "C:\Users\Andrea\Desktop\VERG\progetto.docm"
WordApp.Visible = True
Set WordApp = Nothing
MsgBox ("Processo completato")
End Sub
in pratica nella cella "A2" si trova il menu a tendina precedentemente creato con la convalida di dati;pertanto, una volta scelto il file, la macro lo copiera' nella cartella "TEMPDOC".
Successivamente con il comando "WordApp.Documents.Open" viene aperto il documento di word che appunto contiene la macro automatica che prende tutti i file della cartella e li riunisce in uno solo.
Et voila', il gioco e' fatto.
Rimangono solo un paio di problemi:
1) Devo aggiungere un codice alla macro di word che elimini tutti i file dalla cartella "TEMPDOC" subito dopo aver creato il documento finale, altrimenti col tempo ci si ritrova con la cartella piena zeppa di file.
2)Per quanto riguarda la macro di avatar3, ossia la seguente:
- Codice: Seleziona tutto
Private Sub Workbook_Open()
perc = "C:\Users\Andrea\Desktop\VERG\ARCHIVIO\PREMESSE\"
Worksheets("Foglio2").Select
Range("A2").Select
With ActiveCell
Worksheets("Foglio2").Range(.Cells(1), .End(xlDown)).ClearContents
End With
ElencoFile Direct:=perc, Estens:="*.Doc", Inicell:=ActiveCell
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
Dim i As Integer, f As String
ChDir Direct
f = Dir(Estens)
If f = "" Then Exit Sub
While f <> ""
i = i + 1
Inicell(i) = f
f = Dir
Wend
Sheets("Foglio1").Select
Range("A2").Select
End Sub
viene generato l'elenco dei file nella colonna A a partire dalla cella 2 della cartella "PREMESSE".
Ora io ho bisogno di un secondo gruppo di file generati da un'altra cartella, chiamata "GRUPPO1" che verranno visualizzati nella colonna B cella 2. Vorrei fare una cosa pulita e integrare il comando in questa macro oppure devo fare un'altra macro identica a questa cambiando semplicemente i dati? Il problema e' che ho parecchie cartelle da processare e mi ritroverei con parecchie macro tante quante le cartelle che mi servono.
Spero di essere stato chiaro, grazie a tutti