我正在尝试编写代码来自动更新不同供应商的库存电子表格。我在保存文件时遇到了问题,因为供应商在上传库存时需要不同的文件类型。所以我需要一些代码,这些代码将根据供应商动态更改另存为文件类型。
到目前为止,我有一个多选文件对话框,用户可以利用它来选择他们想要更新的电子表格。到目前为止,我拥有的 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()
部分。
这些公式正在查看一个表格,该表格在所需的文件类型和类型代码旁边具有供应商 ID。在即时窗口中运行时,这些公式会产生所需的结果。但是当它们在这段代码中运行时,会返回一个错误: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
但我得到同样的错误。任何帮助将非常感激。