Condividi:        

[Macro Excel] Modificare una multiselezione di file TXT

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 Excel] Modificare una multiselezione di file TXT

Postdi Marcello Ferrau » 10/04/13 21:35

Salve a tutti ragazzi,
eccomi nuovamente a chiedere una delucidazione riguardo la possibilità di accelerare il mio lavoro eheh.

Allora, i files su cui devo lavorare sono dei txt in input e in output.
Semplificherò il loro contenuto e la macro originale in modo da risultare subito immediato ciò che vorrei eseguire.

I miei txt avranno tutti il seguente contenuto interno:
-----------------------
xxxxx yyyyy wwwww
xxxxx yyyyy wwwww
xxxxx yyyyy wwwww
xxxxx zzzzz wwwww
xxxxx yyyyy wwwww
xxxxx yyyyy wwwww
xxxxx yyyyy wwwww
-----------------------

La mia macro è questa (operazione inventata per l'occasione):

Codice: Seleziona tutto
Sub Prova1()

    Dim V As Variant
   
    fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")

    mycell = fileToOpen
    myfile = fileToOpen & "_SPAZI_MOD.txt"
   
    Open mycell For Input As #1
    Open myfile For Output As #2
   
    Do While Not EOF(1)
        Line Input #1, V
        If Mid$(V, 7, 5) = "yyyyy" Then
            va = Mid$(V, 1, 6)
            vb = "prova"
            vc = Mid$(V, 12, 6)
            modifica = va & vb & vc
            Print #2, modifica
        Else
            Print #2, V
        End If
     Loop
        Close #1
        Close #2
       
        MsgBox ("ELABORAZIONE TERMINATA")
    Range("A1").Select
       
End Sub


che crea un file mod il cui interno si presenterà così:
-----------------------
xxxxx prova wwwww
xxxxx prova wwwww
xxxxx prova wwwww
xxxxx zzzzz wwwww
xxxxx prova wwwww
xxxxx prova wwwww
xxxxx prova wwwww
-----------------------

Ora, il mio quesito è questo: io ho decine di file txt, diciamo tutti identici formalmente (si distinguono solo per il nome), e vorrei evitare di eseguire la stessa macro per ognuno di essi. Pensavo a una multiselezione in modo da aprirli insieme e su ognuno di essi eseguire la macro in un solo colpo.

Ho trovato che per la multiselezione potrei usare il comando:

FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Text Files (*.txt), *.txt", _
MultiSelect:=True, Title:="Text Files to Open")

ma non riesco a creare un ciclo che li consideri tutti in un colpo...
ci sarebbe questa possibilità?

Un grazie anticipato a ogni suggerimento :)
Marcello Ferrau
Win7 + Office 2010 Ita
Xp + Office 2003 Ita
Avatar utente
Marcello Ferrau
Utente Junior
 
Post: 13
Iscritto il: 24/10/12 20:47

Sponsor
 

Re: [Macro Excel] Modificare una multiselezione di file TXT

Postdi ricky53 » 10/04/13 22:09

Ciao,
il mio consiglio è di copiarli un un nuovo percorso in cui ci siano solo loro come file.
Li apri uno per volta e cambi quello che ti occorre.

Queste operazioni si possono fare con del codice VBA

Come te la cavi con il VBA e la programmazione?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Macro Excel] Modificare una multiselezione di file TXT

Postdi Anthony47 » 10/04/13 22:15

Immagino pero' che l' obiettivo sia consentire all' utente di selezionare un tot di file dalla directory...
La GetOpenFilename, se usata con MultiSelect:=True, restituisce una matrice di risultati; quindi si potra' usare una macro come questa:
Codice: Seleziona tutto
Sub ppppp()
Dim FilesToOpen
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Text Files (*.txt), *.txt", _
MultiSelect:=True, Title:="Text Files to Open")

For I = LBound(FilesToOpen) To UBound(FilesToOpen)
    mycell = FilesToOpen(I)      '***
    myfile = FilesToOpen(I) & "_SPAZI_MOD.txt"       '***
'etc etc
'etc etc
    Close #1
    Close #2
Next I

MsgBox ("Terminata elaborazione di " & (I - 1) & " files")
End Sub

Le tue istruzioni correnti sono messe nel ciclo For I /Next I, con le variazioni visibili nelle righe marcate ***
Ho assunto che le tue istruzioni siano funzionanti correttamente, comprese quella che assegna un valore a myfile.

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

Re: [Macro Excel] Modificare una multiselezione di file TXT

Postdi Marcello Ferrau » 10/04/13 22:26

Ciao ricky, come ha scritto Anthony il mio obiettivo era proprio risparmiare tempo selezionando più files (praticamente uguali) che necessitano della stessa operazione, evitando di aprirli uno per uno.

Ciao Anthony, la tua soluzione proposta è assolutamente perfetta!!

Grazie mille, ottimo come sempre!!
Marcello Ferrau
Win7 + Office 2010 Ita
Xp + Office 2003 Ita
Avatar utente
Marcello Ferrau
Utente Junior
 
Post: 13
Iscritto il: 24/10/12 20:47

Re: [Macro Excel] Modificare una multiselezione di file TXT

Postdi ricky53 » 10/04/13 22:30

Ciao,
si ottima la soluzione di Anthony. Si distingue sempre.


Io, invece, ti avevo proposto lo schema (il codice non sarebbe stato complesso) che automaticamente, senza selezionare i file, apriva ed agiva su tutti i files presenti nel percorso cambiando quanto occorreva.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Macro Excel] Modificare una multiselezione di file TXT

Postdi Marcello Ferrau » 11/04/13 18:42

Sì ricky, avevo pensato anche io a una soluzione simile, ma ho desistito in quanto nella cartella sono presenti tanti files (anche non txt) e quindi avevo bisogno di poter selezionare a piacimento.

Piuttosto, avrei bisogno di un'altra dritta sempre maneggiando file txt aprendoli come input.

Vorrei aprire il file con il mio classico incipit:
-------------------------
Sub Prova1()

fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")

mycell = fileToOpen

Open mycell For Input As #1

------------------------------------
e poter ricercare uno specifico carattere all'interno del file txt.
Non so se si può usare il comando Cells.Find anche in questo caso.
Ma il mio desiderio sarebbe ottenere un messaggio che mi indichi se il carattere cercato è presente e se sì in quale riga del file testo si trova.

Qualcuno ha un seggerimento?
Marcello Ferrau
Win7 + Office 2010 Ita
Xp + Office 2003 Ita
Avatar utente
Marcello Ferrau
Utente Junior
 
Post: 13
Iscritto il: 24/10/12 20:47

Re: [Macro Excel] Modificare una multiselezione di file TXT

Postdi Anthony47 » 11/04/13 23:23

Non mi e' chiaro se queste operazioni sono in aggiunta o in alternativa a quelle precedenti; in linea di massima devi leggere ogni record del file (Line Input #1, TextLine) e controllare se la tua stringa e' presente nella variabile TextLine, nel qual caso esci dalla lettura; a ogni lettura incrementi un contatore di record, che indichera' il numero di record in cui la stringa e' presente.

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


Torna a Applicazioni Office Windows


Topic correlati a "[Macro Excel] Modificare una multiselezione di file TXT":


Chi c’è in linea

Visitano il forum: Ricky0185 e 42 ospiti