Diego
'-------------
'-------------
Il fatto e' che la proprieta' Filesearrch era molto prroblematica (buggy).
Vedi. ad esempio:
Non potendo (o non volendo) eliminare i bug, Microsoft ha
deciso di non includere piu' questa proprieta'.
---
Regards,
Norman
Ciao
--
Pat [Microsoft Office Project MVP]
....................................
http://www.riolab.org
....................................
E ti pareva... la prima macro che ho provato a far girare ed ho subito
beccato un comando eliminato.
Mi leggerò la guida con estrema attenzione sperando di non dover
perdere troppo tempo ad apportare le dovute modifiche. Purtroppo
descrivere circa 6 anni di lavoro in VBA non è proprio immediato.
Ringrazio , come sempre, dei preziosissimi consigli.
P.S. come diavolo faccio ora che non ho più filesearch a fare girare
una macro del genere ?
Essa si occupa di riempire i campi di una listbox con i nomi dei file
presenti in una determinata cartella.
Sub pan_aggiorna_listbox_maschera_principale()
Application.ScreenUpdating = False
Dim creapercorso As Object
Set creapercorso = CreateObject("WScript.Shell")
percorsodesktop = creapercorso.SpecialFolders("Desktop")
Gestione_panieri_f24h.ListBox1.Clear
cartellaInEsame = percorsodesktop & PercorsoslavataggioPanieriCreati
filtroFile = ".xls"
IncludiSottocartelle = False
' carica tutti i file .xls nella listbox
Dim VettoreNumeroFile() As Variant, FileCount As Long
Erase VettoreNumeroFile
If filtroFile = "" Then filtroFile = "*.*" ' tutti i file
With Application.FileSearch
.NewSearch
.LookIn = cartellaInEsame ' la cartella dove va a cercare
.Filename = filtroFile
.SearchSubFolders = IncludiSottocartelle
.FileType = msoFileTypeAllFiles
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) = 0 Then MsgBox
("Nessun paniere disponibile.. devi crearlo"): Exit Sub
ReDim VettoreNumeroFile(.FoundFiles.Count)
For FileCount = 1 To .FoundFiles.Count
Gestione_panieri_f24h.ListBox1.AddItem
Split(Dir(.FoundFiles(FileCount)), ".")(0)
.FileType = msoFileTypeExcelWorkbooks ' reset
filetypes
Next
End With
End Sub
Grazie di tutto.
'-------------
P.S. come diavolo faccio ora che non ho più filesearch a fare girare
una macro del genere ?
'-------------
Hai visto il link suggerito da me?
---
Regards,
Norman
Quando ho visto che non esisteva più mi son creato una classe che
simula il vecchio FileSearch (stessi metodi con parametri simili) e
l'ho chiamata MyFileSearch.
La nuova classe fa uso di FileScriptingObject (un esempio d'uso lo
trovi sul link che ti è stato suggerito; rispetto a quell'esempio ti
consiglio di usare il late binding in maniera da non dover includere i
riferimenti alla libreria "Microsoft Scripting Runtime" per ogni
progetto che frà uso della classe).
La nuova classe che ho creato non è proprio identica al vecchio
FIleSearch (anche perché l'ho fatta piuttosto in fretta per migrare
delle macro precedenti; inoltre non implementa nemmeno tutti i vechi
metodi/proprietà) però le modifiche per usarla sono minime.
In ogni modo chi è interessato alla classe può far riferimento al mio
sito Web personale (la si può scaricare dalla pagina
http://ivenuti.altervista.org/risorse/vba.htm)
p.s. se la migliorate fatemi avere le modifiche, così le si
condividono con tutti ;-)
ciao
Ti prego di scusarmi, ero di frettissima e ho dato uno sguardo più che
frettoloso. ;-))
Questa mattina me lo studio per bene.
Ancora grazie.
Diego
Ottimo ci vado subito, se posso contribuisco.
Grazie mille.
Diego
Sub tutti_file_presenti_nella_cartella()
Dim VettoreNumeroFile() As Variant
Dim cartellaContenenteFile As String
Dim spec As String
Dim Filtrofile As String
' parametri per utilizzare la macro
cartellaInAnalisi = "C:\Documents and
Settings\skimer\Desktop\Intraday\ENEL\"
Filtrofile = "xls"
c = 0
cartellaContenenteFile = Dir(cartellaInAnalisi)
If cartellaContenenteFile = "" Then
MsgBox ("Cartella in analisi non ha nessun file di tipo " &
Filtrofile)
Exit Sub
End If
numerofileTipoExcel = 0
Do While cartellaContenenteFile <> ""
estensione = Split(cartellaContenenteFile, ".")(1)
If estensione = Filtrofile Then
numerofileTipoExcel = numerofileTipoExcel + 1
ReDim Preserve VettoreNumeroFile(c)
VettoreNumeroFile(c) = cartellaContenenteFile
End If
c = c + 1
cartellaContenenteFile = Dir()
Loop
If numerofileTipoExcel = 0 Then MsgBox ("nessun file di tipo " &
Filtrofile)
End Sub
E' una prima stesura e non ha il livello di completezza della notevole
( almeno per le mie capacità) soluzione di Ivan, ma per i miei scopi
dovrebbe andarmi benone.