excel - 在 VBA 中使用文件选择器打开工作簿会引发编译错误

标签 excel vba

我使用 FilePicker 将工作簿定义为变量。在顶部,我将变量定义为公共(public)和字符串。我试图将其声明为工作簿,但它不起作用。当我尝试在另一个模块中进入此工作簿时,将其定义为字符串,我得到
以下编译错误:

Invalid qualifier.



有什么建议有什么问题吗?
Public wipreport As String

sub wip()

With Application.FileDialog(msoFileDialogFilePicker)
        'Makes sure the user can select only one file
        .AllowMultiSelect = False
        .Title = "Select WIP Report"
        .ButtonName = "OK"
        'Filter to just the following types of files to narrow down selection options
        .Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
        'Show the dialog box
        .Show

        'Store in fullpath variable
        wipreport = .SelectedItems.Item(1)
    End With

end sub

另一个模块中的代码行,我得到这个编译错误:
wipreport.Worksheets("1. WIP report").Select

谢谢你的帮助。

最佳答案

编译错误是您可能遇到的最好的错误 - 编译器明确告诉它不起作用。在这种情况下,wipreport.Worksheets("1. WIP report").Select无法工作,因为 wipreportString 类型它没有 Worksheets属性(property)。

可能尝试这样的事情,如果 wipreport 它将起作用是打开的 Excel 文件的名称:

Workbooks(wipreport).Worksheets("1. WIP report").Select

如果 wipreport是文件的路径,然后打开它是一个更好的选择:
Workbooks.Open wipreport

甚至,为它设置一个变量:
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=wipreport)

在这个主题上,这个问题在 StackOverflow 的#VBA 中获得最高票数是有原因的 - How to avoid using Select in Excel VBA .

关于excel - 在 VBA 中使用文件选择器打开工作簿会引发编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289550/

相关文章:

excel - 避免重复的 OFFSET 计算

excel - 如何创建宏以在我当前选择的列上执行 TextToColumn,目标必须是相同的列

excel - 使用 OleDb 解析 Excel 时跳过几行

Excel VBA - 在非连续范围内选择最远/最左边的单元格

excel - VBA : Me. 名称函数

excel - 如何在 Excel 中将文本转换为日期格式

C# Excel RTD 服务器多实例断开一张纸上的所有公式停止另一张纸上的公式

vba - 在 VBA Excel 中设置工作簿语言

excel - 如何使用矩阵填充 Excel 中的列表框?

sql - 在Excel-VBA中访问SQL数据库