Страницы: 1
RSS
Переименовать файл
 
С помощью Application.FileSearch нахожу все файлы на диске С, после этого их нужно переименовать, имя каждого заранее известно и хранится в переменной. Как быть?
 
тогда появится новая книга с новым именем, а можно просто переименовать уже существующую?
 
На строчку Name OldName As NewName  
выскакивает ошибка:  
Run-time error '58'  
File already exists
 
Не понятно про какой файл идет речь в File already exists.  
Ведь имена у них разные и одинаковых нет впринципе.  
Может он просто не может переименовать файл таким образом?
 
Ну название другое конечно.  
Я делаю так:  
Name_file = .FoundFiles(i)  
 
и в качестве OldName у меня стоит Name_file  
а переименовываю так:  
Name Name_file As Name_file_new  
 
где, например, Name_file = "c:\hghghghg.xls"  
Name_file_new = "c:\1.xls"
 
Это понятно, что существует :)  
Вот только файла с именем, хранящимся в переменной Name_file_new, существовать не может ни как. Оно состовляется отдельно.
 
Да вот только файла с таким именем там нет, проверял вручную, да и не может его там быть, его имя состовляется по определенному алгаритму, ну там даты, фигаты :) а те файлы, которые переименовываются, в имени содержат случайный набор символов. Пробовал даже на одном файле: в папке оставляю один файл, нахожу его и пытаюсь переименовать, но тот же результат :(  
Макрос выполняется из отдельной открытой книги, может он ее хочет переименовать, как текущую рабочую? хотя имя у нее тоже другое.
 
Все равно такая же ошибка. А файлы которые переименовываются в этот момент закрыты.
 
Отдельно вывожу содержимое Name_file и Name_file_new и оно разное!!!  
например, Name_file = "c:\hghghghg.xls"  
Name_file_new = "c:\1.xls"
 
With Application.FileSearch  
  .NewSearch  
  .LookIn = "c:\"  
  If .Execute() > 0 Then  
      For i = 1 To .FoundFiles.Count  
          Name_file = .FoundFiles(i)  
          Workbooks.Open Filename:=Name_file  
 
          'далее операции над файлом, потом его закрываю,здесь же  
          'состовляется новое имя для файла и сохраняется в    
          'переменную Name_file_new:  
               
          For Each w In Workbooks  
             If w.Name <> ThisWorkbook.Name Then  
                  w.Close savechanges:=True  
             End If  
          Next w  
 
          'а теперь пытаюсь переименовать и не получается:  
 
          Name Name_file As Region Name_file_new  
       Next i  
   End If  
End With
 
сори, строчку перепутал вот так нужно    
Name Name_file As Name_file_new
 
help, help!  :)
 
Вот блин касяк, весь извелся и так писал и этак, написал как Вы сказали, только одну функцию - тот же результат.  
Написал явный адрес в функции и все переименовалось - вот думаю чудо :)  
Вернул все обратно Name Name_file As Name_file_new и не поверите все заработало!!!!!    
Может ошибся в написании имени, но я его уже сто раз проверил, а тут сам писать не стал просто скопировал из кода и все работает!  
Столько времени загубил на поиски, а аказалось все банально :)  
Большое спасибо за помощь!!!!!!!!!!!!
Страницы: 1
Читают тему
Наверх