Application.FileDialog vs GetOpenFilename:有什么区别?

时间:2016-12-31 11:04:03

标签: excel-vba vba excel

我想在假期休假期间自学VBA。 对于我的第一个模块,我想创建一个执行以下操作的模块:

  1. 显示对话框。提示用户选择CSV文件。
  2. 通过循环打开CSV文件。
  3. 根据数据汇总CSV文件。
  4. 无论如何,对于number1,我在网上搜索并找到两个方法: Application.FileDialog和GetOpenFilename。嗯,我想知道,两者之间有什么区别(限制,能力,速度等)。一种方法比另一种方法有显着优势吗?

    感谢。

2 个答案:

答案 0 :(得分:2)

Application.FileDialog是一个伞形属性,为您提供几种类型的标准文件对话框:(1)文件选择器,(2)文件夹选择器,(3)打开文件对话框和(4)"另存为& #34;对话。获取FileDialog对象后,您可以进一步对其进行自定义,并调用Show()(在某些情况下后跟Execute())以显示它并获取用户操作。

Application.GetOpenFilename方法显示获取文件名的对话框(另请参见上面的案例1,3,4),允许您快速预设选定的属性集,即 文件过滤器,初始文件过滤器索引,对话框标题,操作按钮文本(例如"打开"或"保存")和选项,是否可以一次选择多个文件(MultiSelect)。但是你无法控制这些预设。

所以基本上前者可以让你更好地控制对话窗口,而后者更快"采用标准的简单一次性方案。

坚持使用快速方法,您可能希望更喜欢GetOpenFilename(),但如果您希望为更大的应用程序创建库,例如总是使用带有一些自定义标准的对话框(自定义文件过滤器或自定义窗口自定义标题)特定于您的应用程序),您可能更喜欢自定义方法,根据您的标准调整FileDialog并显示它。

另请注意,上述两种方法都为您提供了为Microsoft Office自定义的对话框。通过谷歌搜索,您可以找到使用Microsoft Windows for example folder picker dialog标准对话框的方法。

答案 1 :(得分:1)

Application.FileDialog是一个对象。 GetOpenFilename是一个属性。如果您调用GetOpenFilename,Excel将拥有对话框对象,对其进行配置,显示它,并为您提供返回值。如果您使用Application.FileDialog,则 进行配置,显示它,并从对象获取返回值。除此之外,它们完全相同 - 这只是谁拥有并控制基础FileDialog的问题。