您可以在没有扩展名的情况下引用/设置变量到工作簿吗?

时间:2019-01-18 20:11:43

标签: excel vba

我试图找到答案,但似乎没有一个在线答案。

代码示例:

dim wb_name as string
wb_name = range("A1").value & ".xlsx"
set wb = workbooks(wb_name)
  • 在扩展名有时会更改的情况下(例如,从旧的excel格式更改为新的格式),是否有一种方法可以在没有“ .xlsx”的情况下完成上述操作?
  • 是否存在某种捕获所有可以解释不同种类扩展名的功能?

3 个答案:

答案 0 :(得分:1)

您可以采用通配符方法。

Dim wb_name as String
wb_name = Range("A1").Value & ".****"
Set wb = Workbooks(wb_name)

答案 1 :(得分:1)

您可以循环浏览打开的工作簿:

{{1}}

使用set wb = getwb(wb_name)调用它

在继续操作之前,只需检查wb仍然不是空的

答案 2 :(得分:0)

您可以使用选择大小写来确定Excel版本和文件扩展名/格式

    If Val(Application.Version) < 12 Then
        'You use Excel 97-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2016
        Select Case wb.FileFormat
        Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
        Case 52:
            If .HasVBProject Then
                FileExtStr = ".xlsm": FileFormatNum = 52
            Else
                FileExtStr = ".xlsx": FileFormatNum = 51
            End If
        Case 56: FileExtStr = ".xls": FileFormatNum = 56
        Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
        End Select
    End If

这里是2个示例

Use VBA SaveAs in Excel 2007-2016 - Ron de Bruin Excel Automation

https://stackoverflow.com/a/30393989/4539709