Aprire cartella con titolo variabile
Hai un problema con Excel? 
Aprire cartella con titolo variabile
di ElCidCampeador data: 12/09/2015 15:05:17
Buongiorno,
vorrei sviluppare un pezzo di codice VBA che, dato un input esterno, mi aprisse la cartella che contiene nel nome quel valore di input. Ad esempio voglio che mi apra "...input 45234" ma anche "...input verza", l'importante è che inizi con una parola che inserisce l'utente. Nota bene: la seconda parte del nome della cartella NON è un numero progressivo, ma solitamente numeri o lettere casuali.
Si tenga conto che la cartella che in realtà vorrei aprire si chiama WB. Tale cartella è contenuta in un'altra cartella, il cui nome però è variabile come detto prima. In pratica so che questa cartella WB è contenuta a sua volta in un'altra cartella che contiene all'inizio del suo nome il valore input: il problema è che non so come finisce!
Ho provato a sviluppare un codice, che riporto, ma mi apre solo la cartella noto l'indirizzo esatto. Chi sa come correggerlo? Grazie!
Sub apriWB()
textbox1 = Range("D7") ' input dell'utente, ovvero come comincia il nome della cartella da aprire
Dim FolderPath As String
Dim TestStr As String
FolderPath = "C:" & textbox1 & "WB" 'la cartella col nome variabile contiene a sua volta una cartella dal nome esatto che devo aprire, che si chiama WB
If Right(FolderPath, 1) <> "" Then
FolderPath = FolderPath & ""
End If
TestStr = ""
On Error Resume Next
TestStr = Dir(FolderPath)
On Error GoTo 0
If Dir$(FolderPath) = "" Then
MsgBox "La cartella non esiste."
Else
Shell "c:windowsexplorer.exe " & FolderPath, vbNormalFocus
End If
End Sub
|
di patel data: 12/09/2015 15:55:57
prova un codice di questo tipo
Sub Opendialog()
cartellainiziale ="F:Documentiexcelfile"
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = cartellainiziale
.Title = "Seleziona cartella e File"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then Exit Sub
strFile = .SelectedItems(1)
End With
Set mybook = Workbooks.Open(strFile)
End Sub |
di ElCidCampeador (utente non iscritto) data: 12/09/2015 18:27:34
Grazie, ma non è questo il punto. Io in ingresso tramite una cella di excel vorrei inserire il nome della cartella, che chiamiamo per comodità "input". Una volta inserito, vorrei che mi si apra automaticamente il percorso "C:input BOHWB", dove "input BOH" intendo la cartella di cui so il nome parziale (per l'appunto la parola "input"). La cartella WB, contenuta nella cartella di cui non so il nome, esiste e non è un problema. Come non è un problema il fatto di attivare la macro. Il problema vero semmai è costringere il programma ad aprire proprio quel percorso, e non riesco a capire cosa dargli in pasto. Ho già provato a usare il carattere jolly "*" tipo "C:input" & "*" & "WB", ma non funziona!
di Vecchio Frac data: 14/09/2015 09:18:26
Mi sono permesso di apportare qualche variazione. Ho aggiunto in calce una function che restituisce il primo percorso trovato che contenga la directory parziale indicata in D7.
Option Explicit
Sub apriWB()
Dim textbox1 As String
Dim FolderPath As String
Dim s As String
textbox1 = Range("D7") ' input dell'utente, ovvero come comincia il nome della cartella da aprire
s = find_subfolder("C:" & textbox1 & "*")
If s = "" Then
MsgBox "Nessuna directory contiene " & textbox1
Exit Sub
End If
FolderPath = "J:" & s 'la cartella col nome variabile contiene a sua volta una cartella dal nome esatto che devo aprire, che si chiama WB
Shell "c:windowsexplorer.exe " & FolderPath & "WB", vbNormalFocus
End Sub
Function find_subfolder(partial_path As String) As String
Dim myfile As String, mypath As String, match As String
On Error Resume Next
myfile = Dir(partial_path & "*", vbDirectory)
Do While Len(myfile) > 0
If Left(myfile, 1) <> "." Then
If (GetAttr(myfile) And vbDirectory) = vbDirectory Then
match = myfile
Exit Do
End If
End If
myfile = Dir
Loop
find_subfolder = match
End Function
|
di ElCidCampeador data: 14/09/2015 23:23:56
Grazie mille! Effettivamente la funzione Dir non mi era venuta in mente
Vuoi Approfondire?