Condividi:        

Importazione in excel/access 2007 di più 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

Importazione in excel/access 2007 di più file TXT

Postdi eddietair » 09/06/10 09:38

Ciao a tutti!
Ho provato a cercare nel forum, ma non ho trovato nulla simile al mio problema..

In azienda, abbiamo dei file TXT generati ogni giorno tramite uno script che legge quali SW sono installati sulle diverse macchine.

I file si chiamano "SW_Pippo.A_ABCDE123456789.txt", dove "Pippo.A" è il nome utente (che può essere con o senza il punto, quindi "Pippo.A" e "PaperinoP" sono due nomi utenti validi) e "ABCDE123456789" è il nome computer.

all'interno questi file sono organizzati in questo modo:

abcde123456789
ABCDE123456789
Pippo.A
Alias name Administrators
Comment Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Administrator
DOMINIO\Pippo.A
DOMINIO\Domain Admins
EmpirumAgent
The command completed successfully.


"NoDisplayName"="Adobe Flash Player 10 ActiveX"
"DisplayName"="2007 Microsoft Office Suite Service Pack 2 (SP2)"
"DisplayName"="2007 Microsoft Office Suite Service Pack 2 (SP2)"
"DisplayName"="2007 Microsoft Office Suite Service Pack 2 (SP2)"
"DisplayName"="2007 Microsoft Office Suite Service Pack 2 (SP2)"
[...]
"QuietDisplayName"="Adobe Flash Player_MUI 10.0.22.87"
"QuietDisplayName"="Adobe Reader 9 All Updates 9.1.3"
"QuietDisplayName"="Adobe Reader 9.1.2"
"QuietDisplayName"="CDBurnerXP 4.002.004"
[...]
---------- D:\DOCUME~1\PIPPO.A\LOCALS~1\TEMP\TEMP.REG
"ParentDisplayName"=""
"ParentDisplayName"="Microsoft .NET Framework 3.5 SP1"
"ParentDisplayName"="Microsoft .NET Framework 3.5 SP1"
"ParentDisplayName"="Microsoft Office Professional Plus 2007"
"ParentDisplayName"="Microsoft Office Professional Plus 2007"
"ParentDisplayName"="Microsoft Office Professional Plus 2007"


Quello che servirebbe sarebbe importare questi dati in una tabella, dove in una cella ho il nome computer, in una il nome persona e nella terza il nome software.

Ho pensato a come fare ad importare in automatico i file, ma non essendo pratico di VBA, saprei solo copiare in un foglio il contenuto dei file.. :oops:

Mi è indifferente farlo in Excel 2007 o Access 2007, in caso posso poi fare una macro di importazione dei dati da Excel ad Access..

Grazie anticipatamente per qualsiasi aiuto!!!! ;)
Eddie
eddietair
Newbie
 
Post: 5
Iscritto il: 09/06/10 09:26

Sponsor
 

Re: Importazione in excel/access 2007 di più file TXT

Postdi eddietair » 09/06/10 10:38

ho trovato in altri topic come creare l'elenco dei file nella cella "A1" del foglio1....
( dalla cartella contenente i file ---> attrib *.txt /s >d:\pippo\pippo123.txt , poi mi copio l'elenco in excel)

mi basterebbe il codice per poter creare in "foglio2" due colonne, che in pratica conterranno il nome del computer (posso crearlo io in cella "A2" del foglio 1, così da avere sia il nome del file contenente i dati che il nome del PC) e il contenuto delle righe del file, ossia

foglio 2:
1 --------- 2
a pippo -- 123
b pippo -- 234
c pippo -- 345
d ecc.
e pluto ---123
f pluti ----234
g ecc.

in questo modo poi avrò tutti gli utenti con in ogni riga il singolo SW installato..
eddietair
Newbie
 
Post: 5
Iscritto il: 09/06/10 09:26

Re: Importazione in excel/access 2007 di più file TXT

Postdi Flash30005 » 09/06/10 10:41

Benvenuto nel Forum, Eddie

Nel forum abbiamo diversi esempi di importazione file txt
Si inzia con la creazione di un elenco dei file contenuti nella cartella vedi qui
Il programma completo copia il file testo e lo inserisce in un documento word
ma cambiando un paio di righe-codice si può importare in excel.

Per maggior chiarezza dovresti inviare un file testo
(confermare che la struttura dei file testo sia uguale per tutti)
Per evitare interpretazione errate dovresti inviare anche un file excel con un esempio della collocazione dei dati (dati corrispondenti al file testo inviato)

Per inviare i file utilizza questa procedura

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: Importazione in excel/access 2007 di più file TXT

Postdi eddietair » 09/06/10 11:23

Ok, ecco una copia del file TXT (sostituito Pippo.A al vero nome, e il vero nome pc con ABCD1234567, è una stringa alfanumerica)

http://rapidshare.com/files/397006103/S ... 7.txt.html

I file sono praticamente tutti uguali, in alcuni casi ho più righe sotto la dicitura "Administrator" se la persona è associata a più gruppi, ma non mi crea problemi.

Per il file excel, per ora è solo un "copia incolla" dell'elenco dei file, che ho ottenuto tramite il comando di cui sopra

http://rapidshare.com/files/397007559/e ... e.txt.html

li ho buttati nella cella A1 del foglio1, in pratica dovrei creare una struttura dove (in qualsiasi foglio, anche nello stesso A1, mi è indifferente perchè poi vado a "lavorarli" a mano) ho due colonne; una con un dato che mi identifica il PC/UTENTE, una che mi riporta tutte le righe del file relativo (quindi avrò la colonna di sinistra con una serie di nomi ripetuti "N" volte, e di fianco i vari software installati in ogni macchina)

es.
pippo office2003
pippo powerpoint
pippo acrobat reader
pluto office2007
pluto mediaplayer

e così via; non mi importa di formattare il contenuto delle celle, quello lo farò io in seguito
purtroppo non so da che parte cominciare per fare una cosa del genere.. :undecided:
grazie mille!! ;)
eddietair
Newbie
 
Post: 5
Iscritto il: 09/06/10 09:26

Re: Importazione in excel/access 2007 di più file TXT

Postdi eddietair » 09/06/10 13:46

ho trovato qualcosa di utile su un altro forum (http://www.ozgrid.com/forum/showthread.php?t=141650 - spero di non violare linee guida riportandovi il link...): crea due colonne, una con il nome del file, una con il contenuto delle righe, la seconda ricontrolla il contenuto del file excel per non importare file già importati!

prima versione
Sub test()
Dim myDir As String, fn As String, txt As String, x
myDir = "c:\testt" '<- change to actual folder path
fn = Dir(myDir & "\*.txt")
Do While fn <> ""
txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(myDir & "\" & fn).ReadAll
x = Application.Transpose(Split(txt, vbCrLf))
Sheets(1).Range("a" & Rows.Count).End(xlUp)(2).Resize(UBound(x, 1)).Value = x
Sheets(1).Range("b" & Rows.Count).End(xlUp)(2).Resize(UBound(x, 1)).Value = fn
fn = Dir()
Loop
End Sub


seconda versione
Sub import_fresh_txt_files()
Application.ScreenUpdating = False
Dim myDir As String, fn As String, txt As String, size As Integer, x
myDir = "Z:\BOWLING\new reporting" '<- change to actual folder path
fn = Dir(myDir & "\*.txt") 'any file

Do While fn <> ""
txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(myDir & "\" & fn).ReadAll
x = Application.Transpose(Split(txt, vbCrLf))
size = UBound(x, 1)
If Application.WorksheetFunction.CountIf(Range("a:a"), fn) = 0 Then
Sheets(1).Range("A1000000").End(xlUp)(2, 2).Resize(size).Value = x 'may change range here
Sheets(1).Range("B1000000").End(xlUp)(-size + 3, 0).Resize(size).Value = fn
Else 'nothing
End If
fn = Dir()
Loop

End Sub


Direi che sono a posto, una volta importato il tutto, mi basta riformattarlo in 2 minuti, e importare il tutto in Access :)

Grazie mille per l'attenzione, e spero sia utile anche ad altri!! 8)
eddietair
Newbie
 
Post: 5
Iscritto il: 09/06/10 09:26

Re: Importazione in excel/access 2007 di più file TXT

Postdi Flash30005 » 09/06/10 13:54

Prova questo file
dovrai mettere tutta la cartella "prova" nella root di C:\
all'interno della cartella troverai il tuo file testo e il file di excel con questa macro di importazione file testo secondo le specifiche:

Codice: Seleziona tutto
Public Perc As String
Sub Avvio()
Columns("A:C").ClearContents
Perc = "C:\Prova\"
Call ElencoFileTxt
Call Importa
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
  Dim i As Integer, f As String
ChDrive "C"
  ChDir Direct
  f = Dir(Estens)
  If f = "" Then Exit Sub
  While f <> ""
    i = i + 1
    Inicell(i) = f
    f = Dir
  Wend
End Sub
Sub ElencoFileTxt()
Worksheets("ListaTxt").Select
Range("A1").Select
  With ActiveCell
    Worksheets("ListaTxt").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
    ElencoFile Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
End Sub
Sub Importa()
Dim Ricetta, Computer, Utente, Progr As String
URT = Worksheets("ListaTxt").Range("A" & Rows.Count).End(xlUp).Row
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Cf = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For T = 1 To URT
    Ricetta = Worksheets("ListaTxt").Range("A" & T).Value
    If Ricetta = "" Then
        MsgBox "Non ci sono file nella directory C:\Prova"
        Exit For
    End If
    Application.StatusBar = "Importazione Dati File " & Ricetta & " ... " & Int(T / URT * 100) & " %"
    Ingredienti = ""
    ContaR = 0
    Open Perc & Ricetta For Input As #2
    Do Until EOF(2)
        Line Input #2, Riga
        If Mriga = Trim(Riga) Then GoTo Salta
        If Trim(Mid(Riga, 1, 400)) = "" Or Trim(Mid(Riga, 1, 1)) = "-" Then GoTo Salta
        ContaR = ContaR + 1
        If ContaR < 2 Then GoTo Salta
        If ContaR = 2 Then Computer = Trim(Riga)
        If ContaR = 3 Then Utente = Trim(Riga)
        If ContaR > 3 Then
        If Asc(Mid(Riga, 1, 1)) <> 34 Then GoTo Salta
            Progr = Replace(Riga, Chr(34), "")
            Progr = Replace(Progr, "DisplayName", "")
            Progr = Replace(Progr, "NoDisplayName", "")
            Progr = Replace(Progr, "QuietDisplayName", "")
            Progr = Replace(Progr, "ParentDisplayName", "")
            Progr = Replace(Progr, "=", "")
            Mriga = Trim(Riga)
        Cf = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row + 1
        Worksheets("Foglio1").Range("A" & Cf).Value = Computer
        Worksheets("Foglio1").Range("B" & Cf).Value = Utente
        Worksheets("Foglio1").Range("C" & Cf).Value = Progr
Salta:
End If
    Loop
    Close #2
    Close
Next T
Worksheets("Foglio1").Select
Range("A1").Select
Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
End Sub




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: Importazione in excel/access 2007 di più file TXT

Postdi eddietair » 09/06/10 15:21

Funziona in maniera perfetta!!
Grazie mille!!!

Mi hai evitato il lavoro di pulizia, ora devo solo raggruppare e eliminare le voci non interessanti :D

Thanks a lot!!!!
Eddie
eddietair
Newbie
 
Post: 5
Iscritto il: 09/06/10 09:26


Torna a Applicazioni Office Windows


Topic correlati a "Importazione in excel/access 2007 di più file TXT":


Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti