- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果 .InitialFileName
未设置,“选择文件夹”对话框 FileDialog(msoFileDialogFolderPicker)
使用 当前目录的应用程序。
有没有办法强制对话框进入 Windows 资源管理器中的“根”文件夹(Windows 10 中的“这台电脑”,早期版本中的“我的电脑”)?
Public Function GetFolderName(InitPath As String) As String
With Application.FileDialog(msoFileDialogFolderPicker)
If InitPath <> "" Then
If Right$(InitPath, 1) <> "\" Then
InitPath = InitPath & "\"
End If
.InitialFileName = InitPath
Else
.InitialFileName = "" ' <-- What can I put here to start at "This PC" ?
End If
If .Show() = True Then
If .SelectedItems.Count > 0 Then
GetFolderName = .SelectedItems(1)
End If
End If
End With
End Function
Shell.Application.BrowseForFolder
使用魔数(Magic Number) 17 来指定:
? CreateObject("Shell.Application").BrowseForFolder(0, "", &H11, 17).Self.Path
我不喜欢使用 BrowseForFolder,因为如果指定了初始文件夹,则用户仅限于此文件夹及以下文件夹。
最佳答案
所以很明显这是不可能的 Application.FileDialog
.
我应用了 Kostas 的建议,并在一个函数中实现了这两种方法(FileDialog 和 Shell.BrowseForFolder),具体取决于是否将初始路径传递给它。
请参阅内联注释。这是我的最终版本。
Public Function GetFolderName(sCaption As String, InitPath As String) As String
Dim sPath As String
' "Hybrid" approach:
' If InitPath is set, use Application.FileDialog because it's more convenient for the user.
' If not, we want to open the Folder dialog at "This PC", which is not possible with Application.FileDialog
' => then use Shell.Application.BrowseForFolder
If InitPath <> "" Then
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = sCaption
' FileDialog needs the init path to end with \ or it will select the parent folder
If Right$(InitPath, 1) <> "\" Then
InitPath = InitPath & "\"
End If
.InitialFileName = InitPath
If .Show() = True Then
If .SelectedItems.Count > 0 Then
sPath = .SelectedItems(1)
End If
End If
End With
Else
' https://ss64.com/vb/browseforfolder.html has all the flags and constants
Const BIF_RETURNONLYFSDIRS = &H1 ' default
Const BIF_EDITBOX = &H10 ' allow users to paste a path e.g. from Explorer
Const BIF_NONEWFOLDER = &H200 ' use this if users shouldn't be able to create folders from this dialog
Dim oShell As Object
Dim oFolder As Object
Set oShell = CreateObject("Shell.Application")
' 17 = ssfDRIVES is "This PC"
Set oFolder = oShell.BrowseForFolder(0, sCaption, BIF_RETURNONLYFSDIRS + BIF_EDITBOX, 17)
If Not oFolder Is Nothing Then
' .Self gets FolderItem from Folder object
' https://devblogs.microsoft.com/scripting/how-can-i-show-users-a-dialog-box-that-only-lets-them-select-folders/
sPath = oFolder.Self.Path
If Left$(sPath, 2) = "::" Then
sPath = "" ' User tricked the dialog into returning a GUID - invalid!
End If
End If
End If
GetFolderName = sPath
End Function
关于excel - FileDialog(msoFileDialogFolderPicker) - 如何将初始路径设置为 "root"/ "This PC"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66263710/
我正在 Access 数据库中制作表单我需要多次打开文件对话框窗口。我只是不明白为什么在我更改了几次选项值并打开文件对话框窗口后它没有更改过滤器。 Public Sub Command17_Click
我正在使用 Java 开发一个 socket 程序。我在后台运行带有套接字服务器的GUI。套接字服务器正在运行一个线程,每 10 毫秒检查一次套接字消息。它们都运行良好,但是当我尝试在 gui 中打开
我使用以下代码遇到了奇怪的行为: FileDialog openFileDialog1; // ... openFileDialog1.CustomPlaces.Add(@"C:\whatever\"
谁能给我解释一下为什么FileDialog实现两个构造函数,一个用于 Frame,一个用于 Dialog?我的意思是,他们为什么不利用继承的好处而只是使用 Window 创建一个构造函数? ?我问这个
我有一个使用 FileDialog 浏览文件的按钮。我需要读取我选择的文件中的所有行,我尝试了很多方法,但对我没有任何作用:( 我有另一个按钮,当我按下它时,它会读取文件并打印它。 B
我想显示一个 Java FileDialog 并将其初始大小设置为合理的值(它不显示最大化按钮,很多用户可能不知道可以使用 alt-space X 代替)。我尝试了 setBounds 但它没有做任何
在开发WinForms应用程序时,我遇到了OpenFileDialog和SaveFileDialog控件中的一个错误。 Google搜索发现只有一个发现相同问题的其他人,但是没有提供解决方案或解决方法
我在 StackOverflow 上找到了这段代码: Dim fd As Office.FileDialog Set fd = Application.FileDialog(msoFileDi
您好,我正在尝试从设置路径中基于 FileDialog 的文件夹导入文本文件?我有一个导入文本文件的代码,但它只打开一个通用的 C:\\ 路径,我应该如何修改下面的代码才能打开指定路径的文件夹? Su
我试图在 QtQuick 中为 FileDialog 设置默认起始目录,但它不起作用(意味着它总是打开可执行文件的目录): property url defPath : "/home/saeid/Wo
我正在创建一个基于 SWT 的应用程序。我有一个名为“Import”的按钮,单击此按钮将打开一个 swt FileDialog 来选择文件。当此文件对话框打开时,我有一个独特的要求,我只想显示特定文件
我试图在 QtQuick 中为 FileDialog 设置默认起始目录,但它不起作用(意味着它总是打开可执行文件的目录): property url defPath : "/home/saeid/Wo
我需要打开一个 FileDialog,以便在使用 Java 7 的 Windows 7 Home 上使用 SWT 打开文件。我需要在按下 BrowseBtn1 按钮 (SWT) 时打开此 FileDi
我可以使用 JFileChooser 给出文件扩展名。示例: JFileChooser chooser = new JFileChooser(); FileNameExtensionFilter fi
当我想在从控制台获得一些输入后打开文件对话框时,它失败了。请参阅下面的代码。当我第一次调用 openFileDialog 然后 chooseOption 时,它工作正常。有人知道这是怎么可能的吗? p
我确信这些都是非常白痴的问题...但我以前从未处理过 FileDialog,而且我似乎无法让我的编码工作。 这是我的 JButton 监听器,我知道它进入是因为弹出了一个 FileDialog: pu
如果我有这样的过滤器字符串(FileDialog 的过滤器): "Image Files (*.bmp, *.jpg)|*.bmp;*.jpg|All Files (*.*)|*.*" C# 中是否有
JMenuBar menubar = new JMenuBar(); JMenu file = new JMenu("File"); add(menubar,BorderLayout.NORTH);
我会将 FileDialog 组件本地化为英语。我的默认语言是意大利语。可能吗? 我使用 FileDialog 的项目是一个 Eclipse 插件项目。 我找到了仅适用于 JFileChooser 组
当窗口对话框打开时,我无法选择多个文件。 void setup() { size(100,100); select_multi_files_via_FileDialog(); } import
我是一名优秀的程序员,十分优秀!