Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Prendi in considerazione solo parte del nome del file per ri

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

Prendi in considerazione solo parte del nome del file per ri

Postdi zanatta77 » 04/08/21 17:51

Buongiorno
Sto cercando di fare una ricerca e visualizzazione dei file all'interno di un documento excel con l'apertura di una Userform.
Per poter risalire al file interessato ho inserito all'interno dell'Userform;
2 TextBox
2 OptionButton
1 CommandButton.
Nel primo TextBox andrà inserito anno di riferimento.
Andrà poi selezionato OptionButton d'interesse "Alfa" oppure "Fiat".
Nel secondo TextBox il nome del file.
Infine il CommandButton che avvia la ricerca e la visualizzazione di quanto richiesto.
Il mio problema è come faccio a dirgli che del TextBox2 deve prendermi solo i 3 caratteri finali come valore e cercarlo nel percorso e se lo trova lo apre ??
Riporto quanto fatto finora che funziona ma legge interamente il file nel nome inserito nel TextBox2
Esempio; se il file.pdf si chiama 12230923_001 e io scrivo nel TextBox2 "001" dovrebbe cercarlo e aprirlo senza tener conto del resto del nome del file

Private Sub CommandButton1_Click()
Dim percorso As String
Dim anno As String
Dim numero As String
anno = TextBox1.Value
numero = TextBox2.Value
If TextBox1 < "1992" And TextBox1 > "1998" Then
MsgBox "L'anno inserito non è compreso nella ricerca dei documenti", vbCritical, "Anno di riferimento"
ElseIf anno = "1992" And OptionButton2.Value = Yes Then
percorso = "W:\CAVALLO\ALIMENTO\"
ActiveWorkbook.FollowHyperlink percorso & numero & ".pdf"
End If
End Sub
Avatar utente
zanatta77
Utente Senior
 
Post: 119
Iscritto il: 01/12/12 16:12

Sponsor
 

Re: Prendi in considerazione solo parte del nome del file pe

Postdi Anthony47 » 04/08/21 20:50

Non capisco a che serve l'anno, visto che non fa nessuna predisposizione utile oltre che dire "va bene" (avrei capito se l'anno impostasse una directory di ricerca particolare).
Inoltre se la ricerca avviene solo con 3 caratteri, e' evidente che potrebbe generare piu' risultati, quindi salta l'ipotesi dell'apertura automatica.
Quindi la mia proposta:
-aggiungerei un ListBox in cui riportare l'elenco dei file trovati; sta all'utente selezionare il file che "preferisce" per aprirlo; puoi aprirlo semplicemente selezionando il file oppure (e secondo me e' meglio) tramite un secondo commandbutton

Con questo codice associato al CommandButton1 (quello attuale) fai la ricerca e popoli il ListBox
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
Dim myList()
Dim fCnt As Long, mySearch As String, myFile As String
'
myPath = "D:\DDocs\"                    '<<< La tua directory, con \ finale
mySearch = Right(Me.TextBox2.Value, 3)
ReDim myList(0 To 30)
myFile = Dir(myPath & "*" & mySearch & "*.*")
Do Until myFile = ""
    myList(fCnt) = myFile
    If fCnt > 29 Then Exit Do
    myFile = Dir
    fCnt = fCnt + 1
Loop
ReDim Preserve myList(0 To fCnt)
Me.ListBox1.List = myList
End Sub


Con quest'altro apri il file selezionato nel listbox:
Codice: Seleziona tutto
Private Sub CommandButton2_Click()
    ftopen = myPath & Me.ListBox1.Text
    lngX = ShellExecute(vbNull, "Open", ftopen, "", "", vbMaximizedFocus)
End Sub


Il tutto richiede che in testa al modulo vba che contiene il codice della userform siano inserite queste dichiarazioni:
Codice: Seleziona tutto
#If VBA7 Then
   Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
   Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
Dim myPath As String


Spero che riesca a combinare il mio codice con quello che hai gia'...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17832
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Prendi in considerazione solo parte del nome del file pe

Postdi zanatta77 » 05/08/21 05:58

Grazie Anthony
In verità non ho scritto tutto il codice perché il mio problema è quello descritto estrarre contenuto che verrà inserito nel TextBox2 prendendo solo ultime 3 caratteri di quanto scritto andando a cercarlo nel percorso indicato prendendo il file che riporta gli ultimi 3 caratteri uguali a quelli immessi e aprirlo.
Il percorso varia ci sono diversi anni per questo serve il TextBox1, e anche OptionButton inseriti in base a quello selezionato fa ulteriore modifica di percorso
Comunque proverò il tuo listato e vediamo come appare e se riesco a renderlo performante per il mio uso.
Grazie comunque gentilissimo
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 119
Iscritto il: 01/12/12 16:12


Torna a Applicazioni Office Windows


Topic correlati a "Prendi in considerazione solo parte del nome del file per ri":

File mobi
Autore: gimart
Forum: Discussioni
Risposte: 8

Chi c’è in linea

Visitano il forum: papiriof, raimea e 31 ospiti