2013-01-10 42 views
0

我有以下功能,只能產生在Mac上一個運行時錯誤52(壞的文件名或號碼)就行了Open filePath & filename For Output As #1運行時錯誤52錯誤的文件名 - 僅限Mac

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

特殊字符'á'顯現在那裏。你可以把它保存爲「:tásty.csv」嗎? – CuberChase

+0

這是我檢查的第一件事。如果刪除整個單詞「Speciál」,它仍然不起作用。 – user3357963

+0

你使用了多長的文件名?我剛做了一些快速測試,似乎有32個字符的限制,經過一番搜索似乎是一個錯誤? http://www.mrexcel.com/forum/excel-questions/518804-office-2011-mac-32-character-filename-limit.html#post2562411 – CuberChase

回答

2

我認爲你已經達到了一個進一步的bug,通過VBA將保存限制爲32個字符。您仍然可以創建該文件,但無法打開並寫入該文件。

我會在處理過程中寫入較短的文件名,並且最後一步使用SaveAs方法保存到較長的CSV文件名或使用AppleScript重命名文件。 (我敢肯定,他們會在Office的下一個版本修復它;)

1

只是爲了增加一點對這個問題

我已經在Office 2011使用VBA的Word問題迷迷糊糊的,所以它不僅僅是Excel。

在我的情況下,它是一個文件夾兩個文件夾回導致問題的路徑。

我創建和使用此路徑寫入文件:

的Macintosh HD:用戶名稱:myusername:桌面:數據提取V8 copy.zip文件夾:XL:Newstyles.xml

當我改變減少文件夾名,31個字符的路徑,即:

的Macintosh HD:用戶名稱:myusername:桌面:數據提取V8 co.zip文件夾:XL:Newstyles.xml

這一切工作正常。

男孩需要一些時間才能找到。它夠糟糕的努力讓我的老大腦編寫VBA無需這些捲髮器扔到路(抱歉的雙關語)

反正 - 希望這可以幫助別人 - 我將通過Word中一個警示微軟

鮑勃J.