Excel - "运行时错误 '1004':对象'_Workbook'的方法'SaveAs'失败" MacBook

3

尝试通过宏将工作表另存为桌面上的 .csv 文件。我一直收到“运行时错误 '1004' 对象 _'workbook' 的方法 'SaveAs' 失败”的提示。

Sub Export()

Dim wb As Workbook
Dim sht5 As Worksheet
Dim r As Long
Dim LastRow As Long
   
Set sht5 = ThisWorkbook.Worksheets("ExportCsv")               'Sheet to export as CSV
Set wb = Application.Workbooks.Add
    
sht5.Copy Before:=wb.Worksheets(wb.Worksheets.Count)

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For r = LastRow To 1 Step -1

If Cells(r, 10) = 0 Then

Rows(r).Delete

End If
        
Next r

Application.DisplayAlerts = False                             'Possibly overwrite without asking
wb.SaveAs Filename:="/Users/thomasduus/Desktop/1.csv", FileFormat:=xlCSV, CreateBackup:=False

Application.DisplayAlerts = True
wb.Close SaveChanges:=False
End Sub

这是一个无效的地址。你缺少 C\(或者你的根目录引用)并且你的斜杠反了。 - urdearboy
1
这是一个有效的路径吗?你可以尝试录制宏来生成正确的路径。 - SJR
我正在使用Mac运行 - 路径应该是有效的。 - Thomas
我以为Mac使用:作为分隔符? - urdearboy
使用 : 可以停止显示运行时错误框,看起来它会通过整个过程,但它不会覆盖我桌面上现有的 1.csv 文件。 - Thomas
您的代码在我的 macOS Catalina 10.15.7 上使用 O365 正常工作。您使用的是哪个版本? - Rory
2个回答

0

我相信Mac文件位置的工作方式大致如下:

Wb.SaveAs "Macintosh HD:Users:thomasduus:Desktop:1.csv"

使用您建议的路径和冒号“:”可以停止显示运行时错误框,看起来它经过了整个过程,但是它没有覆盖我桌面上已存在的1.csv文件 :( ? - Thomas
是的 - 这大概就是我对Mac特定的VBA知识的全部了。在你的问题中添加Mac标签,这样也许会有更多经验丰富的人看到你的问题并给予回答! - urdearboy
你可以直接打开原始文件并进行编辑,这样你就不用担心覆盖的问题了。 - urdearboy
1
尝试将其保存为不同的名称,以确保saveas代码正常工作。您已关闭警报,这是正确的做法,因此必须是Mac特定问题,而我没有使用Excel的Mac电脑,所以无法提供太多测试/帮助。祝你好运! - urdearboy

-1

您的文件路径不正确,可能是驱动器为C:,请在前面添加C:并使用反斜杠。更正后的代码行:

wb.SaveAs Filename:="C:\Users\thomasduus\Desktop\1.csv", FileFormat:=xlCSV, CreateBackup:=False

我也曾这样想,但在 OP 使用的 Mac 上无效。 - urdearboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接