Откройте команду Workbook, используя переменные в качестве имени файла - PullRequest
0 голосов
/ 06 ноября 2018

Я создаю код для открытия файлов 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 голосов
/ 06 ноября 2018

Не имея точной таблицы передо мной, невозможно быть уверенным, поскольку я не могу точно воспроизвести вашу проблему, но, вероятно, это связано с преобразованием типов, когда вы объединяете числа для fYear и fPeriod в файл название. Это может быть начальный или конечный пробел, вставленный в имя файла.

В то время как точные обстоятельства, которые заставляют меня это делать, теряются в вихрях туманов времени, я всегда выполняю преобразование текста из целого числа в строку при построении строки с именем файла в формуле Excel или в VBA.

Так что я бы попробовал это:

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

Предполагается, что x и y являются целыми числами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...