运行时错误52错误的文件名 - 仅限Mac

时间:2013-01-10 22:43:50

标签: macos vba excel-vba excel-vba-mac excel

我有以下功能,仅在Mac上Open filePath & filename For Output As #1

行生成运行时错误52 (错误的文件名或数字)
Function ExportAsCSV(ByVal charToEncode As String, _
    ByVal filePath As String, ByVal filename As String) As Boolean

'Function to Export string to CSV. Returns True/False if successful
'Tested and working on PC XL2003,2007 & 2010 // MAC XL2011

    'On Error GoTo Err:
    On Error GoTo 0


    Open filePath & filename For Output As #1
    Print #1, charToEncode
    Close #1

    ExportAsCSV = True

    On Error GoTo 0
    Exit Function

Err:
On Error GoTo 0
ExportAsCSV = False

End Function

导致错误的示例参数是:

  filePath : "Untitled:Users:ooo:Desktop:New" : String
  filename : ":FloridaRhum Barbancourt 5 Star Reserve Speciál 8 Years Old.csv" : String

它肯定是导致问题的文件名,好像我将其更改为":test.csv"作为一个例子它有效。所有单个单词也可以正常工作,因此它似乎不是一个编码问题,如果我生成一个相同长度的长文件名,它也很好。

我难过......有什么想法吗?

修改

另外,只需要添加,Open filePath & filename For Output As #1确实会在正确的位置生成一个文件名正确的文件。但是因为VBA生成错误所以没有写入,所以文件是零字节。

2 个答案:

答案 0 :(得分:2)

我认为你遇到了一个遗留错误,它将通过VBA保存限制为32个字符。您仍然可以创建该文件,但无法打开并写入该文件。

我要么在处理时写入较短的文件名,要么在最后一步使用SaveAs方法保存更长的CSV文件名或使用AppleScript重命名文件。 (我相信他们会在下一版Office中修复它;)

答案 1 :(得分:1)

只是为此问题添加更多内容

我在Office 2011下使用vba for Word偶然发现了问题,所以它不仅仅是Excel。

在我的情况下,它是导致问题的路径中的两个文件夹。

我正在创建并使用此路径写入文件:

Macintosh HD:用户:myusername:桌面:Data Extractor V8 copy.zip文件夹:xl:Newstyles.xml

当我更改路径以将文件夹名称缩小为31个字符时,即:

Macintosh HD:用户:myusername:桌面:Data Extractor V8 co.zip文件夹:xl:Newstyles.xml

一切正常。

男孩那需要一些时间才能找到。它足够糟糕,试图让我的旧大脑写vba而没有把这些卷发器扔进路径(对不起双关语)

无论如何 - 希望这有助于其他人 - 我将通过Word向Microsoft发布提醒

Bob J。