Office.FileDialog 未按预期执行

Posted

技术标签:

【中文标题】Office.FileDialog 未按预期执行【英文标题】:Office.FileDialog not performing as I expected 【发布时间】:2021-11-15 19:39:37 【问题描述】:

我放弃了命名范围,转而使用 Excel 工具的内置导入。在选择要导入的电子表格时,打开文件对话框将不起作用。是的,我在提示时添加了所需的参考。 根据我读过的所有文档,这应该可行:

Dim FilePath As Variant
Dim dlg As Office.FileDialog
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
With dlg
    .AllowMultiSelect = False
    .Title = "Select Log Sheet"
    .Filters.Clear
    .Filters.Add "Select Log Sheet", "*.xlsx"
    If .Show = True Then
        FilePath = dlg.SelectedItems
    Else
        MsgBox "You Clicked Cancel"
    End If
 End With

但是,当它到达 .Filters.Add 时,我得到了

“对象不支持该属性或方法”

我开始认为 Access 讨厌我。我退休后写了一个快速的日志表处理应用程序,而与 Access 的斗争越来越烦人。 谢谢你的帮助。顺便说一句,下一步是将返回的文件提供给保存的导入,到目前为止我还没有看到如何将文件参数传递给它。

【问题讨论】:

【参考方案1】:

您正在使用 msoFileDialogFolderPicker 对话框, 这是用于选择文件夹(不是文件),因此不支持过滤文件类型(正如您尝试做的那样)。

建议改用 msoFileDialogFilePicker。这是为了获取目标文件路径(这是您的代码所暗示的)。

另外,您还有第二个错误,可以稍微修改您的代码(如下所示)。 注意.SelectedItems(1) 的使用并取消设置对话框对象:

    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Select Log Sheet"
        .Filters.Clear
        .Filters.Add "Select Log Sheet", "*.xlsx"
        
        If .Show = True Then
            FilePath = .SelectedItems(1)
        Else
            MsgBox "You Clicked Cancel"
        End If
     
     End With

【讨论】:

谢谢,成功了。现在我的下一个技巧,将文件路径传递给保存的导入并调用它 成功了 ...然后请标记为已回答。

以上是关于Office.FileDialog 未按预期执行的主要内容,如果未能解决你的问题,请参考以下文章

vbscript 未按预期执行

Mandelbrot 集函数未按预期执行

ViewController 未按预期执行 segue

Nodejs 代码未按预期执行

match_parent 未按预期执行

查询未按预期执行,无论如何都返回 -1