2017-09-25 4 views
0

filedialog.show 함수를 사용하여 폴더의 경로를 가져 오려고합니다.VBA FileDialog.Show가 다시 시작됩니다.

내가 직면하고 문제이다 : 나는 코드가 계속되지 않는 folderpicking 창에서 폴더를 선택

  • 후. 다시 시작하거나 아무 일도 일어나지 않고 종료됩니다.

무엇이 문제 일 수 있습니까?

[...] 

Dim fpath As Variant 
Dim fldr As Object 
Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
fldr.Title = "Select a Folder" 
fldr.AllowMultiSelect = False 
fldr.InitialFileName = Application.DefaultFilePath 
If fldr.Show = -1 Then 
    fpath = fldr.SelectedItems(1) 
Else 
    GoTo NextCode 
End If 
NextCode: 
set fldr = Nothing 

[...] 
+0

코드가 작동합니다. 잘못은 아마도'[...]'로 표시 한 섹션에 있으며, 이는 당신을 도울 수 없게 만듭니다. – YowE3K

답변

1

그것은 작동 그냥 경로 결과를 표시 (또는이 Sub에서 String 값을 반환)하는 데 사용하고 있지 않습니다. 선택한 폴더의 경로를 반환하는 Function로 코드를 사용하려면

If fldr.Show = -1 Then 
    fpath = fldr.SelectedItems(1) 
    MsgBox fpath ' <-- for DEBUG 
End If 

Set fldr = Nothing 

은, 아래의 코드를 사용

If fldr.Show = -1 Then 
    fpath = fldr.SelectedItems(1) 
Else 
    GoTo NextCode 
End If 

NextCode: 
set fldr = Nothing 

사람 :

은 코드를 변경

:

Function GetFolderPath() As String 

Dim fpath As Variant 
Dim fldr As Object 

Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
With fldr 
    .Title = "Select a Folder" 
    .AllowMultiSelect = False 
    .InitialFileName = Application.DefaultFilePath 

    If .Show = -1 Then 
     GetFolderPath = .SelectedItems(1) 
    End If 
End With  
Set fldr = Nothing 

End Function 

그리고 Sub 테스트 코드 :

Sub Test() 

Dim FolderPath As String 

FolderPath = GetFolderPath 
MsgBox FolderPath 

End Sub 
+0

분명히 코드는 정상적으로 작동합니다. 디버깅 "단계"를 사용하고 있었고 길을 잃었습니다. MsgBox를 체크 포인트로 사용하고 코드에서 브레이크 라인을 추가하여 everithing이 원활하게 진행되었습니다. –

관련 문제