Application.FileDialog vs GetOpenFilename:有啥区别?
Posted
技术标签:
【中文标题】Application.FileDialog vs GetOpenFilename:有啥区别?【英文标题】:Application.FileDialog vs GetOpenFilename: What is the difference?Application.FileDialog vs GetOpenFilename:有什么区别? 【发布时间】:2016-12-31 11:04:03 【问题描述】:我正在尝试在短暂的假期期间自学 VBA。 对于我的第一个模块,我想创建一个执行以下操作的模块:
-
显示对话框。提示用户选择 CSV 文件。
通过循环打开 CSV 文件。
根据数据汇总 CSV 文件。
无论如何,对于number1,我在网上的例子中搜索并找到了两种方法: Application.FileDialog 和 GetOpenFilename。嗯,我想知道,两者之间有什么区别(限制、功能、速度等)。一种方法比另一种方法有显着优势吗?
谢谢。
【问题讨论】:
【参考方案1】:Application.FileDialog 是为您提供多种类型的标准文件对话框的综合属性:(1)文件选择器,(2)文件夹选择器,(3)打开文件对话框和(4)“另存为”对话框。获取 FileDialog 对象后,您可以进一步对其进行自定义并调用Show()(在某些情况下后跟Execute())来显示它并获取用户操作。
Application.GetOpenFilename 方法显示用于获取文件名的对话框(另见上面的案例 1、3、4),允许您快速预设选定的一组属性,即 文件过滤器、初始文件过滤器索引、对话框标题、操作按钮文本(例如“打开”或“保存”)和选项,是否可以一次选择多个文件(多选)。但是您无法控制这些预设。
因此,基本上前者让您可以更好地控制对话窗口,而后者在标准简单的一次性场景中采用“更快”。
坚持使用快速方法,您可能更喜欢GetOpenFilename()
,但如果您希望为更大的应用程序创建库,例如始终使用带有一些自定义标准的 fie 对话框(自定义文件过滤器或自定义窗口自定义标题)您的应用程序),您可能更喜欢根据您的标准调整 FileDialog
并显示它的自定义方法。
另外请注意,上述两种方法都会为您提供为 Microsoft Office 定制的对话框。通过谷歌搜索,您可以找到使用 Microsoft Windows 标准对话框的方法,for example folder picker dialog。
【讨论】:
【参考方案2】:Application.FileDialog
是一个对象。 GetOpenFilename
是一个属性。如果您调用GetOpenFilename
,Excel 将拥有对话框对象,对其进行配置、显示并为您提供返回值。如果你使用Application.FileDialog
,你配置它,显示它,并从对象中获取返回值。除此之外,它们完全相同 - 只是谁拥有和控制底层 FileDialog
的问题。
【讨论】:
FileDialog
是 Application 的一个属性,它返回一个 FileDialog 对象。 GetOpenFilename
是一种显示标准打开对话框的应用程序方法。 GetOpenFilename
仅适用于 Excel。以上是关于Application.FileDialog vs GetOpenFilename:有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章