0

我有以下函数,它仅在 Mac 上产生运行时错误 52 (错误的文件名或编号)Open filePath & filename For Output As #1

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 生成错误,所以没有写入任何内容,因此文件为零字节。

4

2 回答 2

2

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

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

于 2013-01-11T13:15:47.323 回答
1

只是为了给这个问题多加一点

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

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

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

Macintosh HD:Users:myusername:Desktop:Data Extractor V8 copy.zip 文件夹:xl:Newstyles.xml

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

Macintosh HD:Users:myusername:Desktop:Data Extractor V8 co.zip 文件夹:xl:Newstyles.xml

一切正常。

男孩确实需要一些时间才能找到。试图让我的老大脑写 vba 而没有把这些卷发器扔到路上已经够糟糕了(对不起双关语)

无论如何-希望这对其他人有所帮助-我将通过 Word 向 Microsoft 发布警报

鲍勃·J。

于 2013-10-27T09:03:07.740 回答