Я пытаюсь написать код, который будет автоматизировать обновление таблиц инвентаризации для разных поставщиков. Я столкнулся с проблемой, когда дело доходит до сохранения файлов, поскольку поставщики требуют разные типы файлов при загрузке инвентаря. Поэтому мне нужен некоторый код, который будет динамически изменять тип файла сохранения в зависимости от поставщика.
На данный момент у меня есть диалог выбора файлов, который пользователь использует для выбора нужных им электронных таблиц. обновить. Имеющийся на данный момент VBA зацикливает эти выбранные шаблоны, которые открываются, обновляются с помощью формул в электронной таблице, а затем сохраняются в другой папке с именем поставщика и текущей датой.
Вот проблемный разделкода, с которым я работаю:
CustomerWB.SaveAs Filename:="S:\Online Inventory Reports\" _
& Left(CustomerWB.Name, 6) _
& "\" _
& Left(CustomerWB.Name, 6) _
& " " _
& Format(Now(), "MM.DD.YY") _
& WorksheetFunction.Index(ThisWorkbook.Sheets(2).Range("B:B"),WorksheetFunction.Match(Left(CustomerWB.Name, 6),ThisWorkbook.Sheets(2).Range("A:A"),0)), _
FileFormat:=WorksheetFunction.Index(ThisWorkbook.Sheets(2).Range("C:C"),WorksheetFunction.Match(Left(CustomerWB.Name, 6),ThisWorkbook.Sheets(2).Range("A:A"),0))
Я отлаживал каждый фрагмент кода, и он работает до тех пор, пока не попаду в разделы Index(Match()
.
Формулы просматривают таблицукоторый имеет идентификаторы поставщиков рядом с требуемым типом файла и кодом типа. При запуске в непосредственном окне эти формулы дают желаемый результат. Но когда они запускаются в этом коде, возвращается ошибка: Run-time error '1004': Method 'SaveAs' of Object '_Workbook' failed
Так что, похоже, VBA не понравилось то, что я смешивал функции листа, когда пытался сохранить файл.
Итак, я переместил секции Index(Match())
в электронную таблицу и заставил VBA заполнить ячейку именем поставщика. Затем присваивает переменные значениям ячеек, которые теперь возвращают тип файла и код типа. Новый код выглядит так:
CustomerWB.SaveAs Filename:="S:\Online Inventory Reports\" _
& Left(CustomerWB.Name, 6) _
& "\" _
& Left(CustomerWB.Name, 6) _
& " " _
& Format(Now(), "MM.DD.YY") _
& FileType, _
FileFormat:=TypeCode
Но я получаю ту же ошибку. Любая помощь будет высоко ценится.