【问题标题】:Save a single worksheet as CSV/xlsx file error 1004 (but does work when use 'export as fixed format' for PDF)将单个工作表另存为 CSV/xlsx 文件错误 1004(但在对 PDF 使用“导出为固定格式”时有效)
【发布时间】:2018-01-12 11:47:55
【问题描述】:

我已经设法使用“ExportAsFixedFormat”将其保存为 PDF,但是当我尝试使用“SaveAs”来获取 CSV 时(尽管我也会接受 xlsx!)我得到:

运行时错误:1004 应用程序定义或对象定义错误

我已经花了很长时间尝试这样做,但在网上找不到任何适合我的答案...

Sub SaveTrackingSheet()


   Dim NewPathTrack As String
   NewPathTrack = Application.ThisWorkbook.Path & "\PDF Outputs\" & Range("NameTrack").Text & "\"
   If Dir(NewPathTrack, 63) = "" Then MkDir NewPathTrack

   Dim NewPathDealer As String
   NewPathDealer = NewPathTrack & Range("CodeTrack").Text & " - " & Range("NameTrack").Text & "\"
   If Dir(NewPathDealer, 63) = "" Then MkDir NewPathDealer


   Sheets("Tracking Sheet").SaveAs _
    Filename:=NewPathDealer & "\" & Range("CodeTrack").Text & " - Tracking Sheet" & ".csv", _
    FileFormat:=xlCSV, _
    ConflictResolution:=2, _
    Local:=True, _
    CreateBackup:=False

End Sub

这是出错的那一行:

   Sheets("Tracking Sheet").SaveAs _
    Filename:=NewPathDealer & "\" & Range("DealerCodeTrack").Text & " - Tracking Sheet" & ".csv", _
    FileFormat:=xlCSV, _
    ConflictResolution:=2, _
    Local:=True, _
    CreateBackup:=False

提前致谢!

【问题讨论】:

  • 出错时Filename的值是多少?
  • 您不应该保存工作簿而不是工作表吗?例如将Sheets("Tracking Sheet") 更改为ThisWorkbook,它工作正常...
  • @jamheadart 我只想保存一张工作表(而不是整个工作簿)。我尝试创建工作表的副本,然后改用“ActiveWorkbook.SaveAs”,但仍然出现 1004 错误。虽然错误在 1004 内更改为“无法访问文件”
  • 我遇到过对文件格式常量使用符号引用失败的情况。尝试用 FileFormat:=6 替换 FileFormat:=xlCSV,
  • @Paula 当我使用带有 CSV 文件扩展名的“ThisWorkbook.SaveAs”时,它只将活动工作表保存为 CSV。

标签: vba excel csv export-to-csv


【解决方案1】:
fileformat:=xlCSVMSDOS

https://msdn.microsoft.com/es-es/vba/excel-vba/articles/xlfileformat-enumeration-excel查看文件格式规范

立即更新:

适合我的代码是:

Sub SaveTrackingSheet()

Dim NewPathTrack As String
   NewPathTrack = Application.ThisWorkbook.Path & "\PDF Outputs\" & Range("NameTrack").Text & "\"
   If Dir(NewPathTrack, 63) = "" Then MkDir NewPathTrack

   Dim NewPathDealer As String
   NewPathDealer = NewPathTrack & Range("CodeTrack").Text & " - " & Range("NameTrack").Text & "\"
   If Dir(NewPathDealer, 63) = "" Then MkDir NewPathDealer


   Sheets("Tracking Sheet").SaveAs _
    Filename:=NewPathDealer & Range("CodeTrack").Text & " - Tracking Sheet" & ".csv", _
    FileFormat:=xlCSV, _
    Local:=True, _
    CreateBackup:=False

    'ConflictResolution:=2 This line causes the error

End Sub

希望对你有帮助!

【讨论】:

  • 也许 Range("CodeTrack").Text 或 Range("NameTrack").Text 的值在文件名或地毯名中包含不允许的字符?喜欢/或¿
  • 找到了。您使用了两次符号/只需键入 Filename:=NewPathDealer & Range("CodeTrack").Value & " - Tracking Sheet" & ".csv" 我删除了 & "/" & 因为这使 url 像 "carpetname//文件名”。
  • 另外,`'ConflictResolution:=2` 行也会引起麻烦。我删除了它,宏对我有用。
  • 不幸的是,他们没有,例如 CodeTrack 565736VA。代号例如红色(彩色)
  • 谢谢!!!事实证明,通过使用上面的 .Value 而不是 .text 有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多