2016-04-27 3 views
0

Мой макрос создает папки с именем year.number.description (2016.185.Hello).Вызов оболочки - только знать часть имени файла

Проблема заключается в том, что это имя может быть изменено, поэтому, например, после того, как несколько дней кто-то переименовывает его 2016.185.Hi

В тот же макрос есть возможность открыть эту папку.

Я думал, что добавление «. *» Будет работать, но это не так.

Private Sub cmdNumero_Click() 

Dim Carpeta As String 
Año = Me.txtAny.Value 
Numero = Me.txtNumero.Value 

Carpeta = "C:\Folder1\Folder2" & "\" & Año & "." & Numero & ".*" 

Call Shell("explorer.exe " & Carpeta, vbNormalFocus) 

End Sub 

Спасибо за внимание

+0

Вы хотите, чтобы пользователь вводил описание? – LiamH

+0

извините за поздний ответ LiamH, Нет, это просто кнопка, которая должна открыть эту папку, и пользователь может не знать точное описание. спасибо за ваше время – Ignasis

+0

Любая помощь была бы принята с благодарностью, спасибо – Ignasis

ответ

0

Вы можете использовать вспомогательную функцию, чтобы вы реальный путь папку в .. что-то вроде следующего:

Function GetSubFolderByPartial(sRootPath As String, sSub As String) As String 
    Dim oFso As Object 
    Dim oTopFolder As Object 
    Dim oSubs As Object 
    Dim oFolder As Object 

    Set oFso = CreateObject("Scripting.FileSystemObject") 
    Set oTopFolder = oFso.GetFolder(sRootPath) 
    Set oSubs = oTopFolder.SubFolders 
    For Each oFolder In oSubs 
     If oFolder.Name Like sSub & "*" Then 
      GetSubFolderByPartial = oFolder.Path 
      Set oFso = Nothing 
      Exit Function 
     End If 
    Next 
End Function 

Таким образом, вы можете просто позвонить это так:

Carpeta = GetSubFolderByPartial("C:\Folder1\Folder2", Año & "." & Numero & ".") 
If Len(Carpeta) > 0 Then 
    Call Shell("explorer.exe " & Carpeta, vbNormalFocus) 
End If 

Надеюсь, что это поможет

+0

perfect! спасибо GeniuS BraiN! – Ignasis

Смежные вопросы