0

我正在尝试编写代码来自动更新不同供应商的库存电子表格。我在保存文件时遇到了问题,因为供应商在上传库存时需要不同的文件类型。所以我需要一些代码,这些代码将根据供应商动态更改另存为文件类型。

到目前为止,我有一个多选文件对话框,用户可以利用它来选择他们想要更新的电子表格。到目前为止,我拥有的 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

但我得到同样的错误。任何帮助将非常感激。

4

1 回答 1

0

原来这是一个简单的错误。我在返回的文件扩展名中包含了星号(例如 *.xlsx)。从表中的文件扩展名中删除星号后,代码运行良好。

于 2019-10-02T14:45:15.080 回答