Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

apri file CSV in base a nomefile

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

apri file CSV in base a nomefile

Postdi matzap » 26/05/15 15:11

Ciao,
ho un nuovo quesito
Ho diversi file del tipo "20150526031954_1600_77753 " (gli spazi dopo i numeri vengono immessi in automatico al salvataggio del file).
vorrei che se un utente digiti in una userform nella textbox1 il valore 77753 e in una textbox2 il valore 1600 venga aperto il file

Ho iniziato cosi:
Dim numcoil As String
Dim spcoil As String
Dim file As Variant
numcoil = UserForm1.TextBox1.Value
spcoil=UserForm1.TextBox2
percorsofile = ActiveWorkbook.Path

Il problema è che la prima parte del nome non la conosco, dipende da quando il file è stato creato. Tuttavia non ci possono essere file con la seconda parte uguale perciò mi basterebbe la seconda parte.
Come posso fare?
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Sponsor
 

Re: apri file CSV in base a nomefile

Postdi matzap » 26/05/15 17:26

sono riuscito a isolare le parti del nome del file che mi interessano:
ad esempio avendo un "nomefile",

nomefile = "20150526010541_1350_79340 "
trattino1 = InStr(nomefile, "_")
trattino2 = InStr(1 + trattino1, nomefile, "_")
MsgBox trattino1
MsgBox trattino2
partedaestrarre1 = Mid(nomefile, 1 + trattino1, (trattino2 - ((trattino1) + 1)))
partedaestrarre2 = Mid(nomefile, 1 + trattino2, 5)
MsgBox partedaestrarre1
MsgBox partedaestrarre2

nomefile deve assumere tutti i nomi dei file in una specifica cartella chiamata "percorsofile"
ho provato con :
for each file in percorsofile
ma mi da errore
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: apri file CSV in base a nomefile

Postdi Anthony47 » 26/05/15 22:59

Ma non ti conviene, invece che usare dei textbox, usare un combobox o un listbox che popoli all' inizio con tutti i nomi file presenti nella cartella e l' utente sceglie il file che gli interessa da questo elenco?

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: apri file CSV in base a nomefile

Postdi matzap » 27/05/15 05:53

ciao Anthony,
i file sono tanti e la lista sarebbe troppo lunga.
sto provando ad usare la funzione dir ma non riesco a capire come funziona.
buona giornata
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: apri file CSV in base a nomefile

Postdi matzap » 27/05/15 08:22

Ho anche provato:
Dim numcoil As String
Dim spcoil As String
Dim file As Variant
numcoil = UserForm1.TextBox1.Value
spcoil = UserForm1.TextBox2.Value
percorsofile = ActiveWorkbook.Path
MsgBox percorsofile
For Each file In percorsofile
nomefile = Dir(percorsofile & "\*.csv")
MsgBox nomefile
Next
ma mi si blocca all'istruzione For dicendomi tipo non corrispondente
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: apri file CSV in base a nomefile

Postdi matzap » 27/05/15 15:39

sono riuscito nel mio intento, questa macro confronta parti del nome di tutti i file .csv nella cartella e mi apre quello corrispondente:

Codice: Seleziona tutto
Sub trova_file()
Dim numcoil As String
Dim spcoil As String
Dim file As Variant
numcoil = UserForm1.TextBox1.Value
spcoil = UserForm1.TextBox2.Value
percorsofile = ActiveWorkbook.Path
'MsgBox percorsofile
nomefile = Dir(percorsofile & "\*.csv")
'MsgBox nomefile
Do While nomefile <> ""
trattino1 = InStr(nomefile, "_")
trattino2 = InStr(1 + trattino1, nomefile, "_")
'MsgBox trattino1
'MsgBox trattino2
Partedaestrarre1 = Mid(nomefile, 1 + trattino1, (trattino2 - ((trattino1) + 1)))
Partedaestrarre2 = Mid(nomefile, 1 + trattino2, 5)
'MsgBox Partedaestrarre1
'MsgBox Partedaestrarre2
If Partedaestrarre1 = spcoil And Partedaestrarre2 = numcoil Then
filetoopen = percorsofile & "\" & nomefile
'MsgBox filetoopen
Workbooks.Open Filename:=filetoopen
'Application.Workbooks.Open Filename:="filetoopen"
GoTo aggiorna:
End If
nomefile = Dir()
Loop
aggiorna:
ActiveSheet.Select
Columns("A:D").Select
    Selection.Copy
    Windows("apri_grafico_coil.xlsm").Activate
    Sheets("Foglio4").Select
    Columns("A:D").Select
    ActiveSheet.Paste
End Sub

Problema:
se apro direttamente il file csv mi inserisce un valore in ogni cella, mentre la macro lo apre unendomi alcuni dati nella stessa cella separandoli da un ";"
come posso ovviare a questo problema?
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: apri file CSV in base a nomefile

Postdi Anthony47 » 27/05/15 23:11

Hummm... Apri un file che ti lascia alcuni dati accoppiati nella stessa cella con il "punto-e-virgola" e controlla se ci sono eventuali apici attorno a quei valori.
Eventualmente allega uno dei file che manifestano questo comportamento.

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


Torna a Applicazioni Office Windows


Topic correlati a "apri file CSV in base a nomefile":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti

cron