使用变量作为文件名打开Workbook命令

时间:2018-11-06 18:07:12

标签: excel vba variables

我正在构建一些代码来打开某些目录文件夹中的excel文件。我在其他位置捕获了一些变量,并且需要从本质上将组成文件名的字符串连接到正确的命令行语法中。

问题出在此代码编译上,我需要一些有关此命令代码的帮助来启动工作簿Open;

Workbooks.OpenText Filename:=(toFolder & fYear & fA & fPeriod & JEres) _

命令代码行位于此子代码中,所有变量均正确定义,我无法获得正确的代码结构来启动文件。

文件为txt,因此open命令下方的大段代码为文本至列,这很好用。除了Workbooks.OpenText命令之外,其他所有东西都可以独立运行。

有什么建议吗?

干杯!

Dim x As Integer
Dim y As Integer
Dim fYear As String
Dim fPeriod As String
Const toFolder As String = "C:\Users\jblogs\Documents\VBA\TFAR"
Const fA As String = "\FA\"
Const JEres As String = "\Constant_File_Name.txt"

x = Application.WorksheetFunction.CountA(Range("A:A"))
fYear = Range("A" & x).Value
y = Application.WorksheetFunction.CountA(Range("B:B"))
fPeriod = Range("B" & y).Value

Workbooks.OpenText Filename:=(toFolder & fYear & fA & fPeriod & JEres) _
    , Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="^", FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
    (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
    Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
    Array(40, 1), Array(41, 1), Array(42, 1)), TrailingMinusNumbers:=True`

1 个答案:

答案 0 :(得分:0)

如果没有精确的电子表格,就无法确定,因为我无法准确地再现您的问题,但是当您将fYear和fPeriod的数字连接到文件中时,可能与类型转换有关名称。可能是文件名中插入的前导或尾随空格。

虽然强迫我执行此操作的确切情况在时间的迷雾中迷失了,但是在Excel公式或VBA中使用文件名构建字符串时,我始终会执行从整数到字符串的文本转换。

所以我会尝试:

@deprecated

假设x和y是整数。