Condividi:        

[Excel-Word] Accodare file secondo ordine predefinito

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

[Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 06/07/11 11:52

Rieccomi con un altro problema che mi si e' presentato oggi.
Nella macro in word (che forse qualcuno si ricorda nel forum):

Codice: Seleziona tutto
Sub AutoOpen()
    ChDir "C:\Users\Andrea\Desktop\VERG\TEMPDOC\"
    myName = Dir("*.docx")
    While myName <> ""
        With Selection
            .InsertFile FileName:=myName, ConfirmConversions:=False
            .InsertParagraphAfter
            .InsertBreak Type:=wdSectionBreakNextPage
            .Collapse Direction:=wdCollapseEnd
        End With
        myName = Dir()
    Wend


ci sono le istruzioni per prelevare dei file che si trovano nella cartella "TEMPDOC" e accodarli in un unico documento word.
E ora la domanda: e se avessi bisogno di accodare quei files con un ordine preciso prelevato da un foglio excel?
In pratica ho in excel l'elenco dei file su una colonna con un'ordine predefinito. Poi da excel tramite macro i file vengono copiati nella cartella dalla quale word li preleva per unirli, ma dovrebbero essere uniti con lo stesso ordine che ho nel foglio di excel ed ovviamente non riesco a far si che nella cartella i file siano ordinati in base all'arrivo.
Come aggirare l'ostacolo? Ho fatto un bel po' di prove ma non va. Potrei settare la cartella dove vengono copiati i file in modo che li ordini con il criterio che mi serve, cioe' l'ordine di arrivo, ma ci riesco. :(

Nag
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Sponsor
 

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Anthony47 » 06/07/11 20:56

Allora il mio suggerimento e' che da excel prepari un file c:\pippolist.txt che contiene i nomi (meglio se Full-nome, cioe' contenente drive, path, nome; es C:\utenti\pippo\documenti\abcd.doc)

Poi la macro autoopen di word invece di accodare i file della directory di servizio accoda i file presenti nell' elenco.

Insomma qualcosa del tipo
Codice: Seleziona tutto
Sub AutoOpen()
    File_Inp = "C:\pippolist.txt"
    Open File_Inp For Input As #1
    Do Until EOF(1)
        Line Input #1, MyName
        With Selection
            .InsertFile FileName:=myName, ConfirmConversions:=False
            .InsertParagraphAfter
            .InsertBreak Type:=wdSectionBreakNextPage
            .Collapse Direction:=wdCollapseEnd
        End With
    Loop
    Close
'...
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 07/07/11 09:41

Non mi funziona.
Il file di testo che creo tramite excel contiene, ad esempio, la prima riga:

C:\Users\Andrea\Desktop\VERG\ARCHIVIO\INTRODUZIONE.docx

ma quando word esegue la macro non riesce a trovare il file, esce l'errore "impossibile trovare il file o il percorso".
Non riesco a capire, il percorso e' corretto, forse il file di testo deve avere una formattazione particolare?
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 07/07/11 10:07

Scusate, trovato l'inghippo. Era proprio il file di testo che creavo con la macro in excel che era malformattato.
Conteneva tabulazioni che alla macro di word non piacevano. La lista deve essere "pulita"
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Flash30005 » 07/07/11 10:16

Questa macro crea un elenco sul foglio di excel inserendo la data del file nella colonna B e alla fine mette in ordine di data crescente i file
dopodiché potrai usare la macro che accoda un file dopo l'altro
Codice: Seleziona tutto
Public perc As String
Sub ElencoFileXls()
perc = "C:\Users\Andrea\Desktop\VERG\ARCHIVIO\"
Worksheets("Foglio1").Select
Range("A1").Select
  With ActiveCell
    Worksheets("Foglio1").Range(.Cells(1, 2), .End(xlDown)).ClearContents
  End With
  ElencoFile Direct:=perc, Estens:="*.docx", Inicell:=ActiveCell
 
      Columns("A:B").Select
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A1").Select
 
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
  Dim i As Integer, f As String
  ChDir Direct
  Set oFs = CreateObject("Scripting.FileSystemObject")
  f = Dir(Estens)
  If f = "" Then Exit Sub
  While f <> ""
    DataF = FileDateTime(f)
    i = i + 1
    Inicell(i) = f
    f = Dir
    Cells(i, 2).Value = DataF
  Wend
End Sub



Fai sapere fino dove arrivi

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 07/07/11 11:35

Sto seguendo la strada originaria, stavo componendo la macro consigliata da Anthony47 che crea un file di testo con l'elenco preso da excel:

Codice: Seleziona tutto
Sub Creafile()
' Crea file di testo da una zona dati Excel
'
Path$ = "C:\Users\Andrea\Desktop\VERG\ARCHIVIO\" ' percorso per salvataggio file
Nomefile$ = "indice.txt"   ' nome del file da salvare
PF$ = Path$ & Nomefile$        ' costruisce percorso completo
nri% = 130 ' imposta n° righe
nco% = 1 ' imposta n° colonne
'
f% = FreeFile                  ' acquisisce primo numero di file libero
Open PF$ For Output As #f%     ' apre un file per output
For riga% = 1 To nri%
    For col% = 1 To nco%
        If col% < nco% Then
           Print #f%, Sheets("Foglio1").Cells(riga%, col%); Chr(9); 'Scrive dati nel file
        Else
           Print #f%, Sheets("Foglio1").Cells(riga%, col%)
        End If
    Next col%
    If riga% < nri Then Print #f%, Chr(13)
Next riga%
'
Close #f%                      'Chiude File
'
MsgBox "Creato file " & Nomefile$, 64, "Messaggio Macro Creafile"
'
End Sub


Solo che mi occorrerebbe che all'interno del file txt , oltre il nome del file, scriva anche il percorso completo altrimenti la macro di word non li trova. Ho fatto alcune prove ma non va. :(
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Anthony47 » 07/07/11 13:34

Non capisco la logica e il bisogno della Sub Creafile()...
Se ti crei in col A di un foglio vuoto l' elenco dei file + path, e poi salvi in formato ".txt" dovresti avere un elenco che contiene solo il testo che ti serve e che poi puoi dare in pasto alla macro AutoOpen.
Se non ti funziona, pubblica un esempio di file .txt con cui hai problemi; oppure spiega perche' non puoi usare questo approccio.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 08/07/11 11:29

Allora avevo capito male io.
Pero' l'unico problema che ho e' che attualmente la macro che mi elenca i file lo fa solo col nome, senza il percorso.
Ossia l'elenco e':

Documento1
Documento2
Eccc

La macro e' questa:

Codice: Seleziona tutto
Private Sub Workbook_Open()
perc = "C:\Users\Andrea\Desktop\VERG\ARCHIVIO\"
    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(ByVal Direct As String, ByVal 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("A7").Select
End Sub


Come la modifico affinche' aggiunga il percorso nella cella in modo tale da creare poi il file txt dal quale word attingera' l'ordine?
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Flash30005 » 08/07/11 12:58

Visto che la macro te l'ho consigliata io penso che debba rispondere al tuo quesito
se vuoi avere il percoso completo nelle celle di colonna A
devi modificare solo questa riga codice da
Codice: Seleziona tutto
Inicell(i) = f

a
Codice: Seleziona tutto
Inicell(i) = Perc & f

ma reputo la cosa alquanto inutile
perché essendo un percorso fisso
lo puoi riutilizzare quando vai a richiamare il file nella macro che accoda...
Ti spiego:
se tu scansioni la colonna A e hai solo il nome del file
For RR = 1 to UR
Range("A" & RR).value (Pippo.doc)
Range("A" & RR).value (Paperino.doc)
etc
Non devi far altro
che cercare il file
in Perc & Range("A" & RR).value
per avere "C:\Users\Andrea\Desktop\VERG\ARCHIVIO\Pippo.doc"
etc
senza dover avere l'intero percorso scritto sulla colonna A ma solo il nome del file

Cioa
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Anthony47 » 09/07/11 00:16

nagato ha scritto:E ora la domanda: e se avessi bisogno di accodare quei files con un ordine preciso prelevato da un foglio excel?
Se non sbaglio stiamo parlando di questo quesito; quindi elenco disponibile in excel, NON da creare.
Ora se il problema e' che li hai in formato NomeFile.doc e vuoi trasformarli in Drive:\Path\NomeFile.doc e' sufficiente che in col A di altro foglio usi la formula
Codice: Seleziona tutto
=Se(Foglio1!A1<>"";"C:\Percorso\"&Foglio1!A1;"")
e poi copi verso il basso. Poi salvi il file (il foglio, in realta') in formato ".txt"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 09/07/11 11:33

Ottimo, ma cosi' sorge un piccolo problema, perche' la colonna A del Foglio1 dove sono elencati i nomi dei file, riporta anche due gruppi di file che hanno un percorso diverso. i percorsi infatti sono tre in tutto:

C:\Users\Andrea\Desktop\Verg\Archivio\
C:\Users\Andrea\Desktop\Verg\Attrezzature\
C:\Users\Andrea\Desktop\Verg\Metodi\

poiche' i file degli ultimi due percorsi iniziano tutti con una sigla uguale (che e' ATT per le attrezzature e MET per i metodi), si potrebbe chiedere alla formula di cambiare il percorso se il nome del file nella cella inizia appunto con "ATT" o con "MET".
Dico una castroneria? :-?
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Anthony47 » 09/07/11 23:55

Dico una castroneria?
No, ma questo lo fai con funzioni elementari di excel; ti do' uno spunto:
Codice: Seleziona tutto
=SE(sinistra(Foglio1!A1;3)="ATT";" C:\Users\Andrea\Desktop\Verg\Attrezzature\"&Foglio1!A1;etc etc)
Per il resto della formula bastera' la consultazione dell' help on line di excel (non e' (solo) per sadismo, ma se non impari la sintassi delle funzioni, a cominciare da quelle basiche come SE, non andrai lontano).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 11/07/11 11:45

Semplice infatti, non ho avuto problemi, basta continuare la formula con le altre possibilita' di percorso.
Ma ovviamente adesso ho notato un altro problema:
quando vado a salvare il file in formato txt per darlo in pasto alla macro di word di cui sopra, excel crea il file con l'elenco corretto ma con uno spazio davanti ogni riga. Infatti ho notato che nella cella (dove e' presente il nome e il percorso completo del file dato dalla formula) rimane uno spazio.
Se si inseriscono formule nelle celle, excel lascia questo spazio, forse corrispondente proprio al segno "=".boh
Bisognerebbe dire all amacro di word di non considerare gli spazi? Altrimenti non esegue nulla.
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi Anthony47 » 11/07/11 23:12

Anche usando una formula a me non risulta alcun spazio nel file txt; non e' che quel carattere e' nel path che poi concateni col nome file?
Comunque, se di spazio si tratta, lo puoi eliminare nella macro di auto_open di word, aggiungendo
Codice: Seleziona tutto
        Line Input #1, MyName   'ESISTENTE
        MyName=trim(MyName)   '<<< AGGIUNTA

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel-Word] Accodare file secondo ordine predefinito

Postdi nagato » 12/07/11 09:33

Grande Giove! Era lo spazio lasciato nella formula prima del percorso!!!!! :lol:
nagato
Utente Junior
 
Post: 36
Iscritto il: 22/03/09 11:17


Torna a Applicazioni Office Windows


Topic correlati a "[Excel-Word] Accodare file secondo ordine predefinito":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti