Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Ricerca sottocartelle

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

Ricerca sottocartelle

Postdi raialb » 12/08/10 10:56

Salve a tutto il forum e spero in un Vs aiuto per i tre problemi che non riesco a risolvere

1) ho trovato nel forum questa macro che mi consente di conoscere i file e il percorso in una determinata cartella(folder)
Codice: Seleziona tutto
Sub listato()
Worksheets("Foglio1").Activate
If Cells(1, 2).Value <> "" Then
Worksheets("Foglio1").Select
percorso = Cells(1, 2).Value
With Application.FileSearch
.LookIn = percorso
.SearchSubFolders = True
.Filename = "*.*"
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
'MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
Sheets("Foglio1").Activate
For i = 1 To .FoundFiles.Count
Cells(i, 1).Value = .FoundFiles(i)
Next i
Columns("A:A").Select
Columns("A:A").EntireColumn.AutoFit
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Else
MsgBox "Non Ho Trovato Files"
End If
End With
Else
Worksheets(1).Select
MsgBox "Inserisci prima il percorso da esaminare"
End If
Range("A1").Select
End Sub

come faccio a far elencare solo il nome dei file senza il percorso

2) ottenuto l'elenco nella colonna A vorrei impostare una macro, che proprio non riesco a fare, che mi aprisse uno alla volta i file, copiasse alcuni dati dal file aperto e li incollasse in una certa colonna. L'operazione copia incolla riesco a farla, il resto no, preciso che i file in colonna A possono essere da 1 a 50

3) su una userform ho inserito una listbox che prende i dati dalla colonna A e selezionando un nome mi apre quel file,
solo che all'apertura del file la userform resta attiva ed in primo piano. Ho necessita' che la userform non si chiuda.
Ho trovato sel web questo codice da inserire nel modulo della userform
Codice: Seleziona tutto

Option Explicit

Private Declare Function FindWindow& Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName$, _
ByVal lpWindowName$)
Private Declare Function SetWindowLong& Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, _
ByVal dwNewLong&)

Private Declare Function EnableWindow& Lib "user32" _
(ByVal hWnd&, ByVal fEnable&)

Private Declare Function ShowWindow& Lib "user32" _
(ByVal hWnd&, ByVal nCmdShow&)
Private Sub UserForm_Initialize()
Dim Style As Long
Style = &H84C80080 Or &H20000 Or &H40000
SetWindowLong FindWindow(vbNullString, Me.Caption), -16, Style
EnableWindow FindWindow(vbNullString, Application.Caption), 1


End Sub


in questo modo posso ridurre ad icona la userform.
Non c'e' un modo per ridurre ad icona in automatico la UF quando e' attivo il file che ho aperto e renderla di nuovo attiva quando chiudo il file selezionato.

Spero in un Vs aiuto
raialb
Newbie
 
Post: 2
Iscritto il: 07/08/10 19:14

Sponsor
 

Re: Ricerca sottocartelle

Postdi Anthony47 » 12/08/10 18:57

Ciao raialb e benvenuto nel forum.
Una discussione abbastanza simile alla tua e' questa: viewtopic.php?t=61079 un po' "antica", ma decisamente attinente.

Relativamente alla tua prima domanda, per avere il solo nome, al posto di Cells(I, 1).Value = .FoundFiles(I) userai
Codice: Seleziona tutto
Cells(I, 1).Value = Right(.FoundFiles(I), InStr(StrReverse(.FoundFiles(I)), "\") - 1)

Nota comunque che:
-anche se per aprire da vba il file e' piu' sicuro avere tutto il path+nome file, puoi benissimo compilare col A solo col nome perche' (nel topic che ti ho linkato) path+nome file e' contenuto nella variabile NomeFile, e puoi usare questa variabile per la successiva Workbooks.Open (NomeFile)
-se devi poi aprire i file da vba e' meglio che estrai solo file xls, quindi suggerisco .Filename = "*.xls" invece che .Filename = "*.*"; non so valutare se e' corretto .SearchSubFolders = True o se e' meglio usare "False", dipende da che cosa ci fai con quel nome senza sapere la directory.

Per la seconda, io mi limiterei a usare le istruzioni del vba per la gestione della form. Poi:
-riservi una cella libera del tuo file per un flag che indica se la tua userform l' hai attivata (flag=1) o l' hai chiusa (flag=0); gestirai questo flag nella macro che usi per aprire la form e per chiuderla.
-apri la userform in modalita' vbModeless (UserForm1.Show vbModeless)
-inserisci poi nel modulo ThisWorkbook del file che contiene la userform qualcosa come
Codice: Seleziona tutto
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
On Error Resume Next
If [K1] = 1 Then _
    UserForm1.Show vbModeless
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
UserForm1.Hide
End Sub

Fai sapere, 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: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ricerca sottocartelle

Postdi raialb » 13/08/10 17:42

Ciao Anthony
grazie per le soluzioni e per la velocita' della risposta
funziona tutto benissimo
grazie ancora
raialb
Newbie
 
Post: 2
Iscritto il: 07/08/10 19:14


Torna a Applicazioni Office Windows


Topic correlati a "Ricerca sottocartelle":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti