2012-05-08 1 views
2

У меня есть макрос Excel VBA, который создает дерево папок на основе файла excel.Создание дерева папок с абсолютными каталогами> 256 символов?

Моя текущая проблема в том, что я, кажется, получаю сообщение об ошибке каждый раз, когда абсолютный каталог становится очень длинным.

Программа выдаст ошибку времени выполнения 76 (путь не найден). У меня такое чувство, что это связано с тем, что сценарий ссылается на абсолютный путь, который превышает 256 символов.

Есть ли какая-нибудь работа для этого? Или мой единственный вариант сократить имена папок и, следовательно, абсолютную строку пути?

EDIT

код я использую следующее:

Dim asheet As Range, r As Range, c As Range 
Dim fPath As String, tmp As String 

Set asheet = ActiveSheet.UsedRange 

For Each r In asheet.Rows 
    fPath = DEST_FOLDER 
    For Each c In r.Cells 
     tmp = Trim(c.Value) 
     If Len(tmp) = 0 Then 
      Exit For 
     Else 
      tmp = Clean(tmp) 
      fPath = fPath & tmp & "\" 
      If Len(Dir(fPath, vbDirectory)) = 0 Then MkDir fPath 
     End If 
    Next c 
Next r 

Clean() является самостоятельной определенной функцией, которая будет просто удалить специальные символы из строки, т.е. !, #, _, @, $, &, *,^и%.

Есть ли другой способ, который я мог бы использовать для создания этих папок, которые, возможно, будут использовать относительный путь вместо абсолютного?

ответ

0

В некоторых случаях API окон имеет limit of 260 characters (C: \ + 256 символов +). Если вы ссылаетесь на свой предыдущий вопрос, попробовали ли вы использовать SHFileOperationW вместо SHFileOperationA?

+0

Я тоже не пользуюсь. Являются ли эти объекты файловой системы? На данный момент я просто использую функцию MkDir(). – toolshed

+0

@Addikt Я думал, вы использовали его после ответа Сиддхарта на ваш предыдущий вопрос. Не уверен насчет mkdir, но я считаю, что он имеет такое же ограничение. – assylias

+1

Да, MkDir() завершится неудачно, если результирующий путь к каталогу будет длиннее 260 символов. – Alain

Смежные вопросы