SaveAs方法 - 路径太长了?

时间:2018-01-09 10:04:57

标签: excel vba

最近我在excel VBA中遇到了workbook.SaveAs方法的问题。 我所拥有的代码是:wb.SaveAs Replace(path & pred & Left(itm.Filename, Len(itm.Filename) - cnt) & "csv", " ", "_"), xlCSV,其中Replace函数评估为:"C:\Users\name.surname\Downloads\attTools\attExtractor\ETLBoxUpload\Somefile111_file.csv"(长度与实际文件中的长度完全相同)。当方法SaveAs被执行时,我得到了" Method 'SaveAs' of object'_Workbook' failed"错误。我通过将文件移动到其他目录(较短路径)来解决问题:"C:\Users\name.surname\Desktop\attExtractor\ETLBoxUpload\somefile111_file.csv"。我没有在代码或任何地方进行任何其他类型的更改。 所以,这就是我的问题:是否有可能传递给SaveAs方法的字符串/路径的长度有限?如果是这样,那么最大长度是多少?(我试图谷歌但没有成功)

1 个答案:

答案 0 :(得分:0)

从一些非常小的东西开始易:

  • 创建一个新的Excel工作簿并将其保存到桌面;
  • 将以下代码放入其中:
Option Explicit
Public Sub TestMe()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    wb.SaveAs wb.Path & "_new", xlCSV
End Sub
  • 看看它是否有效;
  • 如果可行,请增加代码,添加替换部件;

关于这个问题:

是否有可能传递给SaveAs方法的字符串/路径的长度有限?如果是这样,最大长度是多少?

不,字符串不受长度限制。但是,正如@ACatInLove的评论中所提到的 - “由于兼容性原因,Windows限制了260个字符的路径。”