我有以下功能,仅在Mac上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生成错误所以没有写入,所以文件是零字节。
答案 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。