ユーザーがフォルダーを選択する必要がある小さな Access VBA アプリケーションがあります。フォルダーピッカーを開始するパスをVBAに伝える方法があるかどうか疑問に思っていました。つまり、フォルダ ピッカーを で開始しますC:\data\forms
。現在は以前使用していたディレクトリから起動しているようです。また、フォルダ ピッカーがアクセスできるものを制限する方法もあります。そのため、内部のものにはアクセスできますC:\data
が、それ以外のものにはアクセスできませんC:
101221 次
5 に答える
24
私は何年もの間、次のコード ( Not My Code ) を正常に使用してきました。
Sub Sample()
Dim Ret
'~~> Specify your start folder here
Ret = BrowseForFolder("C:\")
End Sub
Function BrowseForFolder(Optional OpenAt As Variant) As Variant
'Function purpose: To Browser for a user selected folder.
'If the "OpenAt" path is provided, open the browser at that directory
'NOTE: If invalid, it will open at the Desktop level
Dim ShellApp As Object
'Create a file browser window at the default folder
Set ShellApp = CreateObject("Shell.Application"). _
BrowseForFolder(0, "Please choose a folder", 0, OpenAt)
'Set the folder to that selected. (On error in case cancelled)
On Error Resume Next
BrowseForFolder = ShellApp.self.Path
On Error GoTo 0
'Destroy the Shell Application
Set ShellApp = Nothing
'Check for invalid or non-entries and send to the Invalid error
'handler if found
'Valid selections can begin L: (where L is a letter) or
'\\ (as in \\servername\sharename. All others are invalid
Select Case Mid(BrowseForFolder, 2, 1)
Case Is = ":"
If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
Case Is = "\"
If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
Case Else
GoTo Invalid
End Select
Exit Function
Invalid:
'If it was determined that the selection was invalid, set to False
BrowseForFolder = False
End Function
于 2013-10-15T05:29:31.420 に答える
8
フォルダー ビューをユーザーに制限する必要がない場合は、FileDialog メソッドを使用することをお勧めします (インターフェイスは、シェルを呼び出すよりも直感的です)。詳細については、CPearson のサイトを参照してください。彼は、 VBA を使用したフォルダーの参照に関する長い記事を持っています (複数の方法。FileDialog オプションは最後にあります)。
Function BrowseFolder(Title As String, _
Optional InitialFolder As String = vbNullString, _
Optional InitialView As Office.MsoFileDialogView = _
msoFileDialogViewList) As String
Dim V As Variant
Dim InitFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = Title
.InitialView = InitialView
If Len(InitialFolder) > 0 Then
If Dir(InitialFolder, vbDirectory) <> vbNullString Then
InitFolder = InitialFolder
If Right(InitFolder, 1) <> "\" Then
InitFolder = InitFolder & "\"
End If
.InitialFileName = InitFolder
End If
End If
.Show
On Error Resume Next
Err.Clear
V = .SelectedItems(1)
If Err.Number <> 0 Then
V = vbNullString
End If
End With
BrowseFolder = CStr(V)
End Function
この関数は 2 つのパラメーターを取ります。最初の Title は、ファイル ダイアログで表示されるタイトルを指定する文字列です。オプションの 2 番目の InitialFolder は、ダイアログを開く最初のフォルダーを指定します。3 番目のパラメーターもオプションで、InitialView はビューの種類を指定します。このパラメーターの有効な値については、オブジェクト ブラウザーの MsoFileDialogView を参照してください。この関数は、ユーザーが選択した完全修飾フォルダー名を返すか、ユーザーがダイアログをキャンセルした場合は空の文字列を返します。
于 2014-09-03T14:51:52.610 に答える