Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] caricare numeri da txt e creare grafico

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] caricare numeri da txt e creare grafico

Postdi prospero0 » 28/07/09 13:58

Buongiorno a tutti,

E' un pò che vi seguo e leggo con piacere le varie problematiche con le proposte di soluzione che vengono postate.

Ho a mia volta un'idea che mi frulla per la testa per creare un grafico prelevando una serie di numeri da alcuni file txt creati in modo automatizzato da un'altro programma.
Dunque ogni nome file .TXT viene creato la prima parte del nome uguale cambia solo la parte finale , Esempio

CICLO A_1
CICLO A_2
Ecc ecc
oppure

CICLO B_1
CICLO B_2
Ecc ecc

All'interno dei file vi sono nella prima riga le intestazioni (sempre uguali) e dalla seconda riga in poi una seria di numeri separati da un ;
A me interessa caricare in excel il numero presente nella 14° posizione (ripetizione ciclo) della seconda riga (il numero rimane uguale per il resto delle righe) e nel caso di un file denominato CICLO A_ dividere questo numero per 100 e moltiplicarlo per 100 e creare il grafico a barre , se il file è denominato CICLO B_ dividerlo per 2000 e moltiplicarlo per 100 (in pratica una percentuale).

Questa cosa la vorrei fare prelevando i dati da 4 cartelle diverse (queste cartelle a fine lavoro vengono sostituite da altre con nomi diversi) in modo da avere nel grafico 4 barre con i valori in percentuale.

Ho gia provato a registrare una macro durante il lavoro di creazione del grafico ma non sono andato molto lontano.
In passato le macro che ero riuscito a creare si limitavano a caricare l'intero file txt e creare da esso un grafico.

Vi allego un esempio di file TXT

http://rapidshare.com/files/260987150/Dati.rar.html

Ringrazio chiunque possa darmi uno spunto da cui partire

Gianni
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Sponsor
 

Re: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 28/07/09 14:00

Volevo aggiungere ancora un'informazione

il grafico si dovrebbe aggiornare automaticamente man mano che si creano nuovi file txt

Gianni
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Anthony47 » 28/07/09 16:23

Ciao prospero0 e benvenuto nel forum.
Per il problema posto, non mi e' chiaro di quanti file al giorno si parla e se le "4 cartelle" sono 4 subdirectories diverse; se SI come si chiamano e quanti file contengono, e se ogni cartella corrisponde a una barra del tuo grafico.

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: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 29/07/09 06:53

Ciao Anthony47 ,

Le quattro cartelle sono 4 sub directory diverse che cambiano mediamente una volta al mese , la radice pricipale di ognuna invece rimane invariata.
Le dir principali che non cambiano mai sono denominate CELLA 2 - CELLA 4 - CELLA 6 - CELLA 8

All'interno delle quali ed in ognuna di esse si trovano le sub directory che creo io ad inizio di ogni nuova registrazione dati

Un esempio

CELLA2 - CCCC - CICLOA
CELLA4 - BBB - CICLOB

All'interno delle sub direcotiry i file non sono sempre uguali e possono variare di volta in volta come numero

partendo sempre dalla numerazione più bassa cioe CICLO A_1 in avanti

Esatto ogni cartella corrisponde ad una barra del grafico.

In pratica e per sapere l'avanzamento in percentuale delle registrazioni.

Ciao
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Anthony47 » 29/07/09 14:49

Humm... non potendo darti una soluzione chiavi in mano ti do' degli spunti e ti rimando ad altre discussioni in cui si e' discusso di quelle cose.
Ti puoi fare l' inventario dei file presenti in una directory con l' istruzione Application.FileSearch (se non hai xl2007); vedi ad esempio qui: viewtopic.php?t=61079
Se hai XL2007 (che non supporta FileSerach) userai un file .bat, ad esempio vedi qui: viewtopic.php?f=26&t=81295
Una volta che hai l' elenco dei file, li importerai uno ad uno; come base userai una macro ottenuta tramite "registra macro" mentre fai l' import di uno dei file in un foglio di servizio del tuo workbook, che poi inserirai in un ciclo For/Next funzione dell' elenco file presenti; aperto il file ne estrarrai l' unica cella che ti serve e la accodi in posizione "corretta" (in funzione della direcory), chiudi il file.
Da vba sara' facile creare un intervallo che comprende tutti i valori da usare per il grafico, con una istruzione del tipo Range("A1:E10").Name = "DatiGrafico"

In alternativa potresti valutare l' uso di Application.FileDialog oppure Application.GetOpenFilename (vedi viewtopic.php?t=52931, seconda parte) con cui puoi scegliere nel filesystem il file (o i files) da importare.

Spero che queste informazioni ti diano lo spunto giusto, comunque posta ancora per ogni dubbio che ti venga.

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: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 29/07/09 15:51

Ciao Anthony47

I primi due link li avevo gia visitati ed avevo effettuato delle prove , senza ottenere dei risultati se non la lista dei fiel presenti nella directory


ora provo a guardare l'ultimo link e vedo cosa riesco a tirare fuori

grazie
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 08:35

Ciao a tutti

dunque questa mattina ho effettuato alcune prove ho ottenuto un codice che ho modificato pe quel che ne capivo ed ho ottenuto questo :
Codice: Seleziona tutto
Sub test2()
'
' test2 Macro
' Macro registrata il 30/07/2009 da U066508
'

'
With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "All files", "*.*"
        .Filters.Add "Output", "*.out", 1
        .Show

     If .SelectedItems.Count = 0 Then
     MsgBox ("Nessuna voce selezionata, procedura annullata")
     GoTo Esci
     End If
     FullNome = .SelectedItems(1)     'Directory e Nome del file selezionato
    End With
    Sheets("Foglio2").Select
    Range("A14").Select
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, Destination:=Range("A1"))
        .Name = FullNome
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll ToRight:=1
    Range("N2").Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("B14").Select
    ActiveSheet.Paste
    Sheets("Foglio2").Select
    Cells.Select
    Range("B1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
Esci:
End Sub


Il risultato finale è quello che mi aspettavo ma avrei bisogno di automatizzare la selezione dei file e caricare l'ultimo file presente poi ripetere la stessa procedura per 4 directory diverse.
Con il codice sopra sono io che vado a selezionare quale file voglio.
Guardando nei vari tread avevo visto una macro che andava a verificare che file erano presenti in una dir e poi li andava a scrivere in un file txt ,dovrei utilizzare quella macro?

Grazie
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Flash30005 » 30/07/09 10:27

Ciao Prospero
Non è necessario creare un file testo basta avere un foglio di excel di servizio (anche nascosto) inseirai questo codice in un modulo (queste macro elencano i file xls contenuti nella cartella specificata nel foglio Lista)
Codice: Seleziona tutto
Public Perc As String

Sub ElencoFileXls()
ChDrive "C"   '<<< Lettera del Drive dove sono contenuti i file
Perc = "C:\Prospero\FileDati\"   '<<< percorso dei file
Worksheets("Lista").Select
Range("A1").Select
  With ActiveCell
    Worksheets("Lista").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFile Direct:=Perc, Estens:="*.xls", 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
End Sub


I seguenti codici vanno inseriti nel programma, da te realizzato, che preleva i dati
Codice: Seleziona tutto
URE = Worksheets("Lista").Range("A" & Rows.Count).End(xlUp).Row
FXLS = Worksheets("Lista").Range("A" & URE).Value
Workbooks.Open Filename:=Perc & FXLS
'...
'...   tuo programma
'... prima di effettuare un altro ciclo di apertura nuvo file inserire questo codice che chiude il file excel processato
Workbooks(FXLS).Close savechanges:=False


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: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 14:11

Ciao Flash30005 , Anthony47

Dalle vostre dritte ho scritto questo codice , sono due sub che io vorrei far lavorare insieme una dopo l'altra ed invece al momento le devo far partire separatamente ed ottengo in questo modo il contenuto delle due directory che mi interessano.
prima faccio partire la sub ElencoFileXls e mi ritrovo la prima lista di file e poi faccio partire la sub ElencoFileXlss (tramite l'editor del vb6 mi posiziono prima della sub e clicco esegui)
Codice: Seleziona tutto
Sub ElencoFileXls()
ChDrive "C"   '<<< Lettera del Drive dove sono contenuti i file
Perc = "C:\Sandy\CELLA2\C635\CICLOB\"   '<<< percorso dei file
Worksheets("Foglio2").Select
Range("A1").Select
  With ActiveCell
    Worksheets("Foglio2").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFile Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
End Sub
-----------------------------------------------------------------------------
Sub ElencoFileXlss()
ChDrive "C"   '<<< Lettera del Drive dove sono contenuti i file
Perc = "C:\Sandy\CELLA4\C635G12\CICLOA1-2-3VEL\"   '<<< percorso dei file
Worksheets("Foglio2").Select
Range("C1").Select
  With ActiveCell
    Worksheets("Foglio2").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFilee Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
 End Sub
--------------------------------------------------------------------------------------
Public 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
  End Sub
-------------------------------------------------------------------------------------------
 Public Sub ElencoFilee(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
  End Sub


Con questo altro codice copio dall'ultimo file della lista la casella N2 e la incollo nel foglio dove poi viene creato il grafico,in questo caso vorrei poter copiare anche i dati dei file che preparo con la sub ElencoFileXlss.
Come si può passare da una Sub all'altra partendo dalla prima?

Codice: Seleziona tutto
Sub test5()
'
' test2 Macro
' Macro registrata il 30/07/2009
'

'
URE = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
FXLS = Worksheets("Foglio2").Range("A" & URE).Value
FullNome = Perc & FXLS     'Directory e Nome del file selezionato
     Sheets("Foglio2").Select
     Range("A14").Select
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, Destination:=Range("A1"))
        .Name = FullNome
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll ToRight:=1
    Range("N2").Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("B14").Select
    ActiveSheet.Paste
    Sheets("Foglio2").Select
    Cells.Select
    Range("B1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
Esci:
End Sub


Grazie a chi mi darà altri spunti per proseguire
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 14:25

Rieccomi,

per la chiamata delle due sub in contemporanea credo di aver risolto

ho inserito questa parte di codice all'inzio

Codice: Seleziona tutto
Sub partenza()
Call ElencoFileXls
Call ElencoFileXlss
End Sub


Ora passo a capire come fare per l'altra routine che copia la casella N2..

Grazie :)
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Flash30005 » 30/07/09 14:35

Per chiamare una macro devi inserire il codice Call NomeMacro

Prova così (inserendo la riga chiamata)
Codice: Seleziona tutto
Sub ElencoFileXlss()

call ElencoFileXls  '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< inserire questa chiamata qui

ChDrive "C"   '<<< Lettera del Drive dove sono contenuti i file
Perc = "C:\Sandy\CELLA4\C635G12\CICLOA1-2-3VEL\"   '<<< percorso dei file
Worksheets("Foglio2").Select
Range("C1").Select
  With ActiveCell
    Worksheets("Foglio2").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFilee Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
End Sub

e poi nella macro test5
Codice: Seleziona tutto
Sub test5()

call  ElencoFileXlss '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< inserire questa chiamata qui

URE = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
FXLS = Worksheets("Foglio2").Range("A" & URE).Value


e avvia solo la macro Test5
questa avvierà ElencoFileXlss che a sua volta avvierà ElencoFileXls (con il suo ciclo)
una volta terminato il ciclo di ElencoFileXls il programma proseguirà con il ciclo della macro ElencoFileXlss che rilascerà il comando a Test5 una volta che il ciclo di ElencoFileXlss è finito.
Il programma terminerà una volta giunto all'End Sub di Test5.

E' questa la sequenza?

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: [Excel] caricare numeri da txt e creare grafico

Postdi Flash30005 » 30/07/09 14:46

prospero0 ha scritto:...per la chiamata delle due sub in contemporanea credo di aver risolto
ho inserito questa parte di codice all'inzio
Codice: Seleziona tutto
Sub partenza()
Call ElencoFileXls
Call ElencoFileXlss
End Sub

Si ok, se aggiungi call Test5 ti elabora anche questa macro...
prospero0 ha scritto:Ora passo a capire come fare per l'altra routine che copia la casella N2..

Credevo che Test5 facesse già questo! :roll:

Non ho i tuoi file di excel e dovrei creare una struttura uguale alla tua per fare dei test
spiega meglio cosa ti occorre, devi accodare dei dati che si trovano in N2 di un foglioX per n-cicli?

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: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 15:06

:cry: crash

mentre ti stavo rispondendo si è bloccato il portatile.... ed ho perso tutti le macro :eeh:

a sto punto fortuna che le avevo postate qui... ora riparto dalle ultime e ricomincio!!!!

:) cmq ti dicevo
queste due macro
Sub partenza()
Call ElencoFileXls
Call ElencoFileXlss
End Sub

sono quelle che verificano i txt nelle cartelle e copiano i dati nel foglio excel

il test5 e la macro che carica il file txt , copia la casella che a me interessa e la posiziona in un altro foglio in cui c'e il vero e proprio grafico e tramite questo dato si aggiornerà di conseguenza.

Il problema che stavo riscontrando adesso e che quando feci la registrione della macro (il famoso test5) avevo effettuato la copia di un solo dato adesso che voglio fare anche la copia dell'altro file caricato tramite la macro ElencoFileXlss la macro precedente va in errore (e giustamente) perchè non trova i dati nella giusta posizione... ora devo capire come variare il tutto..

Forse eri tu Flash30005 che in un tread avevi postato una riga per una macro in cui si facesse in modo che la macro stessa ripetesse le operazioni ogni tot tempo?

Ciao
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Anthony47 » 30/07/09 15:09

La macro del primo link e' questa:
Codice: Seleziona tutto
SourceDir = "C:\pippo"       '<<<< Aggiustare
Set fs = Application.FileSearch
With fs
    .LookIn = SourceDir
    .SearchSubFolders = False
.Filename = "*.txt"
If .Execute() = 0 Then
    MsgBox "No files in " & SourceDir
    Exit Sub
End If
End With
'Trovati file:
With fs
MsgBox "Ci sono " & .FoundFiles.Count & " file(s) found."    '1
        For i = 1 To .FoundFiles.Count
NomeFile = .FoundFiles(i)
MsgBox NomeFile                                           '2
'
'>>>>QUI LA GESTIONE DEL FILE CONTENUTO NELLA VARIABILE "NomeFile"
'
'
Next i
End With
End Sub

I Msgbox servono solo per debug, li togli quando vuoi.
Essa looppa tra tutti i file contenuti nella directory che gli hai detto; nell' area marcata >>> dovrai inserire la gestione del singolo file, che credo sia l' importazione e dovrebbe andare bene la seconda parte del codice che hai postato alle 9:35 (a parte NomeFile e non FullNome).
Se hai piu' directory in cui "scavare" allora inserirai tutto il codice in un ulteriore loop in cui compilerai SourceDir con i valori delle varie dir prima di eseguire.
Ad esempio potresti fare:
Codice: Seleziona tutto
Percorso="C:\DirectoryPrincipale\"
ListaDir = Array(Dir1, Dir2, Dir3, Dir4)    'Le dir che ti interessano
For J=0 to Ubound(ListaDir)
SourceDir=Percorso & ListaDir(J)
'
'>>> IL CODICE CHE "LAVORA" UNA SINGOLA DIR
'
Next J


Forse sono io fuori strada?
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: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 15:16

Grazie Anthony47

non sei tu fuori strada sono io che remo... e mi arrangio... :) come posso ehehehe

adesso provo a portare avanti sia le macro che ho posto poco sopra e sia provare a vedere come si comporta con la tua macro

Grazie
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Flash30005 » 30/07/09 15:52

Sarò poco presente fino al 2 agosto p.v., potro' rispondere a eventuali quesiti solo dopo quella data, se altri nel frattempo non avranno gia' dato il loro contributo

Ma vedo che Anthony si è attivato e stai, quindi, in ottime mani...

Ciao a tutti
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: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 15:55

Allora qualcosa ho recuperato e sto ritornando al punto... prima del crash

dunque i file che la macro fa accodare mi danno un problema, sono accodati non in base al tempo di creazione ma in base al nome , e così mi ritrovo che il file che viene caricato non è l'ultimo creato ma bensì un'altro :(

forse e meglio che vi allego i file così potete capire meglio

http://rapidshare.de/files/47990488/Sandy.rar.html

scompattare e trovere sia i file txt che il file xls in cui risiede il grafico
le macro
Codice: Seleziona tutto
Public Perc As String
Sub partenza()
Call ElencoFileXls
Call test5
End Sub
Sub ElencoFileXls()
ChDrive "C"   '<<< Lettera del Drive dove sono contenuti i file
Perc = "C:\Sandy\CELLA2\C635\CICLOB\"   '<<< percorso dei file
Worksheets("Foglio2").Select
Range("A1").Select
  With ActiveCell
    Worksheets("Foglio2").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFile Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
End Sub
Public 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
  End Sub
Sub test5()
'
' test2 Macro
' Macro registrata il 30/07/2009
'

'
URE = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
FXLS = Worksheets("Foglio2").Range("A" & URE).Value
FullNome = Perc & FXLS     'Directory e Nome del file selezionato
     Sheets("Foglio2").Select
     Range("A14").Select
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, Destination:=Range("A1"))
        .Name = FullNome
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll ToRight:=1
    Range("N2").Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("B14").Select
    ActiveSheet.Paste
    Sheets("Foglio2").Select
    Cells.Select
    Range("B1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
Esci:
End Sub


Codice: Seleziona tutto
Public Perc As String
Sub partenza()
Call ElencoFileXlss
Call test6
End Sub
Sub ElencoFileXlss()
ChDrive "C"   '<<< Lettera del Drive dove sono contenuti i file
Perc = "C:\Sandy\CELLA4\C635G12\CICLOA1-2-3VEL\"   '<<< percorso dei file
Worksheets("Foglio2").Select
Range("C1").Select
  With ActiveCell
    Worksheets("Foglio2").Range(.Cells(1), .End(xlDown)).ClearContents
  End With
  ElencoFilee Direct:=Perc, Estens:="*.txt", Inicell:=ActiveCell
End Sub
Public Sub ElencoFilee(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
  End Sub


Sub test6()
'
' test2 Macro
' Macro registrata il 30/07/2009
'

'
URE = Worksheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
FXLS = Worksheets("Foglio2").Range("A" & URE).Value
FullNome = Perc & FXLS     'Directory e Nome del file selezionato
     Sheets("Foglio2").Select
     Range("A14").Select
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, Destination:=Range("A1"))
        .Name = FullNome
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll ToRight:=1
    Range("N2").Select
    Selection.Copy
    Sheets("Foglio1").Select
    Range("B14").Select
    ActiveSheet.Paste
    Sheets("Foglio2").Select
    Cells.Select
    Range("B1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
Esci:
End Sub



Se provate la prima macro vedrete che il numero che viene copiato è il numero 95 (riga N2) prelevato dal file Ciclo B_99.txt , bensi io mi aspettavo che il file caricato fosse l'ultimo e cioe Ciclo B_533.txt che ha all'interno il numero 450 (riga N2)

come si può fare in modo che i file vengano accodati per data di creazione?

Ciao
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi prospero0 » 30/07/09 15:57

Ciao Flash30005 ,

Ci si risente il 2 agosto.... io mio malgrado sono in ufficio fino a fine agosto :-?
prospero0
Utente Junior
 
Post: 21
Iscritto il: 28/07/09 13:33

Re: [Excel] caricare numeri da txt e creare grafico

Postdi pietrol » 30/07/09 19:19

Ciao prospero0
ho seguito il post con attenzione e mi permetto di fare una considerazione che secondo me potrebbe portare ad una semplificazione sostanziale del problema.
La mia considerazione parte dalla seguente premessa:
vuoi prelevare sempre i dati dall'ultimo file in ordine di tempo quindi gli altri file non ti servono più, anzi ostacolano la ricerca del file corretto.
Se la premessa è vera renderebbe tutto più semplice: alla file del ciclo di lettura del file, questo viene chiuso ed immediatamente rinominato o cancellato, così che la prossima volta vi sia solo un file, quello nuovo.
Così facendo si potrebbe anche evitare di salvare elenchi provvisori di files in quanto il primo file trovato sarebbe anche quello, unico, da elaborare all'interno di quella directory.

Fammi sapere cosa ne pensi.

ciao
pietrol
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: [Excel] caricare numeri da txt e creare grafico

Postdi Anthony47 » 30/07/09 22:55

Nella mia interpretazione il problema non e' scartare file "vecchi", ma inserire i file presenti in ordine di data/ora.
Se e' cosi', il mio suggerimento e':
-in un' area di servizio inserisci non solo il dato che ti serve (col N) ma anche la data/ora (col A?)
-finita l' importazione dei file, ordini quell' area per data/ora (codice ottenuto con registra macro), poi prelevi il blocco dei dati e accodi nella posizione definitiva.
Questo lo farai per ogni gruppo di file contenuti in una directory.
Ci sarebbe la possibilita' di leggere la data/ora di creazione del file, ma questo innescherebbe altri cicli che invece con il metodo di sopra non sono necessari.

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] caricare numeri da txt e creare grafico":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti