打开一个带有变量名的文件

opening a file with a variable name

你好,我有当前的问题,我在 Module1 中有一个名为 Dateiname 的变量,它是一个 Excel File.This 变量的名称,其值如“04_01_2017.xlsm”。它可能因用户输入而异

    Dateiname = Ord & mNummerGanz & "_" & Name & ".xlsm"
    ThisWorkbook.SaveAs Filename:=Dateiname

我希望能够从另一个 Excel file.This Excel 文件激活此 Excel 文件,然后在激活 Excel 之前在 Module2 中执行一些操作带有变量名称的文件。

当我打字时;

    Windows(Dateiname).Activate

我收到如下错误:运行时错误 9。任何人都可以帮助我吗?

在所有模块中使用 Option Explicit

模块 1 中的变量不在模块 2 的 scope/available 中。 Option Explicit 会提醒您注意此错误,因为 Dateiname 很可能在 Module2 的范围内未定义,并且具有 empty/nullstring 值。

如果 Dateiname 是 empty/nullstring,这总是会引发下标超出范围(类型 9)错误,因为它等同于 Windows("").Activate,并且因为没有这样命名的 Window/Workbook,将引发错误。

如果 Dateiname 是一个模块范围的变量,你可以这样做:

Windows(Module1.Dateiname).Activate

或者最好是:

Workbooks(Module1.Dateiname).Activate

正如其他人所提到的,您可能应该使用 Workbook 变量。

IF Dateiname 是过程作用域

您需要明确地将变量传递给模块 2 中的过程。例如,

模块 1:

Sub foo()
Dim Dateiname as String
Dateiname = "some value"

Call Module2.bar(Dateiname)

End Sub

模块 2:

Sub bar(Dateiname as String)

MsgBox Dateiname

End Sub