Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

creare una macro in excel per importare file di testo

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

creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 11:40

Salve, sono nuovo del forum ed ho un piccolo grande problema.
Ho un file di testo deltipo seguente:

dn: uid=000000,ou=pippo,o=pluto
domanda-reset-password: AQIC3IgRWlK7PXIzkwpYp8X7qEQCXD
PnRV/khgGZMoxEQgY=
domanda-reset-password: AQIC3IgRWlK7PXJa/Po6yIg3LZUfm3
pQOLr2Dt3t28cwpHQ=
domanda-reset-password: AQIC3IgRWlK7PXL/nf1aRtSo5FLwb8
mw/yL4pstFmnNxItZ0wPpLV9pJU3bTPos7lcOS

dn: uid=000001,ou=pippo,o=pluto

dn: uid=000002,ou=pippo,o=pluto

dn: uid=000003,ou=pippo,o=pluto

dn: uid=000004,ou=pippo,o=pluto

dn: uid=000005,ou=pippo,o=pluto
domanda-reset-password: AQIC3IgRWlK7PXIzkwpYp8X7qEQCXD
PnRV/khgGZMoxEQgY=

dn: uid=000006,ou=pippo,o=pluto


Praticamente sono memorizzate delle password e dei nomi utenti per un accesso privato.
Dovrei estrapolare da tale file solo gli utenti che hanno impostato le domande di sicurezza per il reset della password.
Ossia gli utenti che oltre ad avere dn: uid=000006,ou=pippo,o=pluto hannoo anche domanda-reset-password: AQIC3IgRWlK7PXIzkwpYp8X7qEQCXD
PnRV/khgGZMoxEQgY=

E' possibile?
Magari con una macro?
oppure è possibile creare un foglio di excel che abbia incollonati tutti i dati correttamente?
nelsenso una colonna nome utente, una password, e una terza con domande reset password?
naturalmente la colonna domande reset password sarà vuota per tutti gli utenti che non hanno reset password impostata
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Sponsor
 

Re: creare una macro in excel per importare file di testo

Postdi Flash30005 » 11/01/10 12:41

Ciao Mufix e benvenuto

Si è possibile con una macro e forse anche senza ma bisognerebbe analizzare il file testo effettivo (anche solo uno stralcio) perché non credo che i dati da te inviati corrispondano a quelli del tuo file testo e se così fosse, qualsiasi tentativo di importazione, sarebbe vano.

sostituisci i dati sensibili con altri inventati ma di uguale lunghezza e invia il file seguendo questa procedura

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 12:52

Flash30005 ha scritto:Ciao Mufix e benvenuto

Si è possibile con una macro e forse anche senza ma bisognerebbe analizzare il file testo effettivo (anche solo uno stralcio) perché non credo che i dati da te inviati corrispondano a quelli del tuo file testo e se così fosse, qualsiasi tentativo di importazione, sarebbe vano.

sostituisci i dati sensibili con altri inventati ma di uguale lunghezza e invia il file seguendo questa procedura

Fai sapere
Ciao


Il file è proprio tale e quale a quello postato nel mio primo post.
è un file immenso quindi è difficile da inviarlo.
Si infatti il problema è proprio di importazione.
Perchè importandolo la formattazione è assurda.
Secondo te tramite una macro si potrebbe riuscire a visualizzare solo gli utenti che hanno immesso le domande per il reset password?
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi Flash30005 » 11/01/10 12:57

Si, è possibile ma, come dicevo prima, non mi occorre l'intero file ma solo una ventina di righe
quindi fai una copia del tuo file inizia a selezionare dalla 20 riga fino all'ultima e cancella tutto (tranne le prime 20 o 30 righe).
Salva il file nello stesso formato del file origine (se txt o altro) e invialo
poi specifica se per utente intendi l'ID e quali altri campi vorresti importare

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: creare una macro in excel per importare file di testo

Postdi Flash30005 » 11/01/10 13:12

Aggiungo al mio post precedente (ti prego di leggerlo)
che dovresti specificare nel caso del primo utente 000000 dove troviamo
    dn: uid=000000,ou=pippo,o=pluto
    domanda-reset-password: AQIC3IgRWlK7PXIzkwpYp8X7qEQCXD
    PnRV/khgGZMoxEQgY=
    domanda-reset-password: AQIC3IgRWlK7PXJa/Po6yIg3LZUfm3
    pQOLr2Dt3t28cwpHQ=
    domanda-reset-password: AQIC3IgRWlK7PXL/nf1aRtSo5FLwb8
    mw/yL4pstFmnNxItZ0wPpLV9pJU3bTPos7lcOS
Significa hce ha cambiato tre volte la password?
E in questo caso cosa vorresti apparisse tre volte il suo ID o è sufficiente una sola volta?
Nel file ci sono anche righe bianche come da te postate?
e come mai in queste due righe (4 in verità) abbiamo dati diversi?
domanda-reset-password: AQIC3IgRWlK7PXJa/Po6yIg3LZUfm3
pQOLr2Dt3t28cwpHQ=
domanda-reset-password: AQIC3IgRWlK7PXL/nf1aRtSo5FLwb8
mw/yL4pstFmnNxItZ0wPpLV9pJU3bTPos7lcOS

Nel senso perche la prima "domanda" termina con = (dopo la Q) e la seconda non termina con = ma con S, è normale?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 14:03

Flash30005 ha scritto:Aggiungo al mio post precedente (ti prego di leggerlo)
che dovresti specificare nel caso del primo utente 000000 dove troviamo
    dn: uid=000000,ou=pippo,o=pluto
    domanda-reset-password: AQIC3IgRWlK7PXIzkwpYp8X7qEQCXD
    PnRV/khgGZMoxEQgY=
    domanda-reset-password: AQIC3IgRWlK7PXJa/Po6yIg3LZUfm3
    pQOLr2Dt3t28cwpHQ=
    domanda-reset-password: AQIC3IgRWlK7PXL/nf1aRtSo5FLwb8
    mw/yL4pstFmnNxItZ0wPpLV9pJU3bTPos7lcOS
Significa hce ha cambiato tre volte la password?
E in questo caso cosa vorresti apparisse tre volte il suo ID o è sufficiente una sola volta?
Nel file ci sono anche righe bianche come da te postate?
e come mai in queste due righe (4 in verità) abbiamo dati diversi?
domanda-reset-password: AQIC3IgRWlK7PXJa/Po6yIg3LZUfm3
pQOLr2Dt3t28cwpHQ=
domanda-reset-password: AQIC3IgRWlK7PXL/nf1aRtSo5FLwb8
mw/yL4pstFmnNxItZ0wPpLV9pJU3bTPos7lcOS

Nel senso perche la prima "domanda" termina con = (dopo la Q) e la seconda non termina con = ma con S, è normale?

Ciao


SIGNIFICA CHE ha impostato 3 domande di sicurezza per il reset della passwrod
è sufficiente una sola volta.
si ci sono anche righe bianche.
Perchè sono 3 possibili domande e di conseguenza queste 2 righe sono diverse poichè l' utente ha scelto2 su 3 domande e impostato 2 risposte differenti.
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi Flash30005 » 11/01/10 14:06

Allora Muflix (ti vedevo in linea e pensavo rispondessi subito ai miei post) ma visto che avevo 5 minuti di tempo ho pensato di "buttare giù" due righe di codice che dovrebbero fare quanto da te richiesto.

Apri un foglio di excel e con ALT e F11 entrerai nello script del Vba
selezioni dal Menu > Inserisci > Modulo e nel modulo incollerai l'intero codice qui sotto riportato ( con SELEZIONA TUTTO)
Codice: Seleziona tutto
Sub ImportaId()
Worksheets("Foglio1").Columns("A:A").ClearContents
Close #1
Open "C:\FileOrig.txt" For Input As #1
Att = 0
RigaUt = ""
RigaPrel = ""
Do Until EOF(1)
     Line Input #1, riga
     If Mid(riga, 1, 2) = "" Then GoTo saltaR
     If Mid(riga, 1, 3) = "dn:" Then
     RigaUt = Mid(riga, 9, 6)
     Att = 1
     End If
     If Att = 1 And Mid(riga, 1, 7) = "domanda" Then
     RigaPrel = RigaUt
     UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1
     Range("A" & UR).Value = "'" & RigaPrel
     End If
saltaR:
Loop
Close #1
End Sub

Chiudi la finestra del VBA ma lasci attivo il foglio1

Ora copia il tuo file dati .txt e lo incolli nella root di C:\
rinominando il file in FileOrig.txt

Torni sul foglio di excel e premi i tasti ALT e F8
apparirà l'unica macro esistente "ImportaId"
la selezioni e premi il pulsante Esegui sulla destra della finestra
Se tutto ok ti troverai nella colonna A tutti gli Id degli utenti che hanno cambiato la password.

Fammi sapere se è questo quello che volevi altrimenti ritocchiamo e miglioriamo

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 14:10

Flash30005 ha scritto:Allora Muflix (ti vedevo in linea e pensavo rispondessi subito ai miei post) ma visto che avevo 5 minuti di tempo ho pensato di "buttare giù" due righe di codice che dovrebbero fare quanto da te richiesto.

Apri un foglio di excel e con ALT e F11 entrerai nello script del Vba
selezioni dal Menu > Inserisci > Modulo e nel modulo incollerai l'intero codice qui sotto riportato ( con SELEZIONA TUTTO)
Codice: Seleziona tutto
Sub ImportaId()
Worksheets("Foglio1").Columns("A:A").ClearContents
Close #1
Open "C:\FileOrig.txt" For Input As #1
Att = 0
RigaUt = ""
RigaPrel = ""
Do Until EOF(1)
     Line Input #1, riga
     If Mid(riga, 1, 2) = "" Then GoTo saltaR
     If Mid(riga, 1, 3) = "dn:" Then
     RigaUt = Mid(riga, 9, 6)
     Att = 1
     End If
     If Att = 1 And Mid(riga, 1, 7) = "domanda" Then
     RigaPrel = RigaUt
     UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1
     Range("A" & UR).Value = "'" & RigaPrel
     End If
saltaR:
Loop
Close #1
End Sub

Chiudi la finestra del VBA ma lasci attivo il foglio1

Ora copia il tuo file dati .txt e lo incolli nella root di C:\
rinominando il file in FileOrig.txt

Torni sul foglio di excel e premi i tasti ALT e F8
apparirà l'unica macro esistente "ImportaId"
la selezioni e premi il pulsante Esegui sulla destra della finestra
Se tutto ok ti troverai nella colonna A tutti gli Id degli utenti che hanno cambiato la password.

Fammi sapere se è questo quello che volevi altrimenti ritocchiamo e miglioriamo

Ciao


Sto utilizzando office 2003 la procdura è la stessa?
in inglese.
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi Flash30005 » 11/01/10 14:18

Si tutto uguale il vba non cambia

però ho effettuato una correzione (ci siamo quasi accavallati con i precedenti post)
ho letto che nel tuo post volevi solo una chiamata utente anche con più cambio di password e così ho modificato la macro per non ripetere l'utente
Codice: Seleziona tutto
Sub ImportaId()
Worksheets("Foglio1").Columns("A:A").ClearContents
Close #1
Open "C:\FileOrig.txt" For Input As #1
Att = 0
RigaUt = ""
RigaPrel = ""
Do Until EOF(1)
     Line Input #1, riga
     If Mid(riga, 1, 2) = "" Then GoTo saltaR
     If Mid(riga, 1, 3) = "dn:" Then
     RigaUt = Mid(riga, 9, 6)
     Att = 1
     End If
     If Att = 1 And Mid(riga, 1, 7) = "domanda" Then
     RigaPrel = RigaUt
     RigaUt = ""
     Att = 0
     UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1
     Range("A" & UR).Value = "'" & RigaPrel
     End If
saltaR:
Loop
Close #1
End Sub


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 14:28

Ho provato con la seconda macro che mi hai postato ma non succede niente.
Non esegue nulla.
qualche consiglio?
logicamente ho cambiato il nome del mio foglio di lavoro in Folgio1...perchè altrimenti non funzionava perchè di default il nome era Sheet1. GIusto?
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi Anthony47 » 11/01/10 14:49

Puoi farlo anche con formule:
-importa il file in colonna A, da A2 in avanti
-in H2 metti la formula
Codice: Seleziona tutto
=SE(SINISTRA(A2;4)="dn: ";SE(CONFRONTA("dn: ";SINISTRA(A3:A53;4);0)>CONFRONTA("doma";SINISTRA(A3:A53;4);0);0;1);"")
che confermerai con Contr-Maiusc-Enter
Copia la formula verso il basso quanto basta.
Dovresti cosi' marcare con 1 tutte le righe di tipo dn: uid (controlla a occhio che sia vero) che non hanno una "domanda"; applichi il filtro automatico su col H, filtri per =1, elimini le righe

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 14:59

Anthony47 ha scritto:Puoi farlo anche con formule:
-importa il file in colonna A, da A2 in avanti
-in H2 metti la formula
Codice: Seleziona tutto
=SE(SINISTRA(A2;4)="dn: ";SE(CONFRONTA("dn: ";SINISTRA(A3:A53;4);0)>CONFRONTA("doma";SINISTRA(A3:A53;4);0);0;1);"")
che confermerai con Contr-Maiusc-Enter
Copia la formula verso il basso quanto basta.
Dovresti cosi' marcare con 1 tutte le righe di tipo dn: uid (controlla a occhio che sia vero) che non hanno una "domanda"; applichi il filtro automatico su col H, filtri per =1, elimini le righe

Ciao.


Durante l'importazione quante colonne dovrebbero risultare?
Mi spiegheresti come fare correttamente l'importaizone?
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 15:02

Poi se non ho capito male il funzionamento della formula dovrebbe selezionare solo le righe diverse da dn: uid.
Ma a me interessa che mi selezioni GLI UID delle persone che hanno impostato le domande per il reset.
E' possibile?
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi Anthony47 » 11/01/10 15:14

Per importare il file hai a disposizione i comandi Dati /Importa dati esterni /Importa dati; importalo come file "piatto", cioe' senza dividerlo in colonne. Se l' operazione e' da fare spesso, puoi registrare una macro mentre fai tali operazioni, per cui basta ripetere la macro e il processo di importazione si ripete.
Una ipotesi piu' di basso livello: apri il file con notepad, copi il testo, incolli in excel.

Marcate le righe che non vuoi, come da istruzioni le selezioni e le elimini; dovrebbero rimanerti solo quelle che vuoi tu.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 15:26

Anthony47 ha scritto:Per importare il file hai a disposizione i comandi Dati /Importa dati esterni /Importa dati; importalo come file "piatto", cioe' senza dividerlo in colonne. Se l' operazione e' da fare spesso, puoi registrare una macro mentre fai tali operazioni, per cui basta ripetere la macro e il processo di importazione si ripete.
Una ipotesi piu' di basso livello: apri il file con notepad, copi il testo, incolli in excel.

Marcate le righe che non vuoi, come da istruzioni le selezioni e le elimini; dovrebbero rimanerti solo quelle che vuoi tu.

Ciao.


Il problema è che se io importo il file in excel, senza dividerlo in colonne mi appare una cella
A2 con contenuto dn: uid=pippo,ou=pluto,o=portale
una cella A3 con contenuto domande-reset-password: AQIC3IgRWlK7PXI4A15LcKVrtPpDaa
una cella A4 con contenuto WlO7kjW8Fm3/eafv9=
e poi la cella A5 vuota.

Nessun altra colonna.
Di conseguenza la tua formula non penso che funzioni.
Giusto?

Ciao.
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi Anthony47 » 11/01/10 15:32

Hai provato?
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare una macro in excel per importare file di testo

Postdi Flash30005 » 11/01/10 15:56

Segui i consigli di Anthony perché è un veterano informatissimo e quindi la sua formula funziona sicuramente.

Io nel frattempo ti invio il file realizzato con macro (il lavoro svolto non va gettato)

scarica questo file.zip
decomprimi otterrai due file:
un file.xls che metterai dove vuoi
mentre il file "FileOrig.txt" lo metterai nella root di C:\
Il foglio deve chiamarsi "Foglio1" ma con il mio file di excel non dovresti avere problemi.

La colonna "A" viene cancellata ad ogni avvio della macro, ma se non cancelli manualmente non ti accorgerai della differenza in quanto andrà a sovrascrivere i dati già esistenti così velocemente che non aprrezzeresti la variazione,
quindi cancella i dati della colonna "A" e avvia la macro tramite apposito pulsante "Importa ID".
Se tutto ok con il mio file.txt potrai mettere al suo posto il tuo file dati rinominandolo nella stessa maniera "FileOrig.txt"
Ricorda che devi impostare in "Esplora risorse" la visualizzazione delle estensioni dei file conosciuti, altrimenti l'estensione dei file sarà sempre nascosta.

Prova le soluzioni fornite e fai sapere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 16:05

Anthony47 ha scritto:Hai provato?


Si ho provato,
ho dovuto modificare la formula in inglese.
Poi mi da un errore solo nelle righe vuote e nelle righe dove non è presente dn:
l' errore è #NOME

Perchè?
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 16:15

Forse mi sono anche spiegato male.
A me interessa visualizzare i 'uid' e 'ou'
degli utenti che hanno impostato ledomande per il reset della password.
Era chiaro oppure non si capiva?
perchè forse la tua formula visualizzava solo le domande per il reset della password ma non nome utente e password degli stessi utenti.
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Re: creare una macro in excel per importare file di testo

Postdi muflix » 11/01/10 16:36

GrandeFlash....
FUnziona....
bisognava soltanto modificare la parola da ricercare....non domanda ma un altra che nel mio file è diversa...
Mi spieghi ora più o meno cosa fa il codice in VB che hai scritto?
Grazie mille sei un grande
muflix
Utente Junior
 
Post: 32
Iscritto il: 11/01/10 11:31

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "creare una macro in excel per importare file di testo":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti