powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Переименование нескольких книг
18 сообщений из 18, страница 1 из 1
Переименование нескольких книг
    #39666989
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть book1 , где в одном столбце находятся названия старых книг ,а в другом названия новых (старые нужно переименовать в новые) .
Выскакивает ошибка : Run-time error '54' File not found в строке
Код: vbnet
1.
Name OldName As NewName


Прога :
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub Êë()
 
Dim OldName, NewName
Dim book1 As Workbook
Dim t As Long, m As Long, n As Long
 
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

Set book1 = Workbooks.Open("E:\Super M\Ïðîåêò ñòàâêè\Ïîèñê ðåøåíèÿ\Óñîâ 7\âñïîìîãàòåëüíûå ïðîãðàììû\Êíèãà â ëèñò\âèç.xlsx")
For t = 3 To 5
   book1.Worksheets("îáù").Range("C" & t).Value = n
   book1.Worksheets("îáù").Range("C" & t).Offset(0, 1).Value = m
   
   OldName = "n": NewName = "m"
   Name OldName As NewName
   OldName = "E:\Super M\Ïðîåêò ñòàâêè\Ïîèñê ðåøåíèÿ\Óñîâ 7\âñïîìîãàòåëüíûå ïðîãðàììû\Êíèãà â ëèñò\Îòáîðíûå óñëîâèÿ\Îòêóäà\n": NewName = "E:\Super M\Ïðîåêò ñòàâêè\Ïîèñê ðåøåíèÿ\Óñîâ 7\âñïîìîãàòåëüíûå ïðîãðàììû\Êíèãà â ëèñò\Îòáîðíûå óñëîâèÿ\Êóäà\m"
   Name OldName As NewName

Next t
book1.Close

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39667022
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxim863Выскакивает ошибка : Run-time error '54' File not found в строкена какой из них? Их две. Как подсвечивать текст в исходниках описано тут Как мне оформить свое сообщение?

Ну если файл не найден. значит файл не найден. Ставь Msgbox Oldname и смотри, что там по факту

Опять же, первое переименование переименовывает "n" в "m" в той же папке? Если да - то во втором случае файл не будет найден, он же уже переименован
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39667500
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
В первой из строк , OldName=0 , n-(например 3 книги находятся в одной папке ) , m- я указываю путь в другую папку (там пусто)
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39667506
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты что-то тут гонишь
Если у тебя ошибка в первой строке, то OldName равно "n", а никак не "0".
У тебя в текущей папке есть файл с именем "n" без расширения?

Да и вообще этот код работать не будет.
Даже если файл по имени "n" существует и будет переименован в "m", то во втором проходе цикла он уже не будет существовать и будет "файл не найден"
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39667517
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Наверное так оно и происходит , только не очень понимаю почему
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39667518
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxim863OldName = "n": NewName = "m"
Name OldName As NewName
А это что вообще? Что и на что Вы здесь переименовываете? Почему переменные в кавычках?
Да и вообще почему n и m типа Long? Вы же там текст собрались хранить(пути к файлам) - значит тип String.
И где назначение этим переменным значений?
Почему Вы в ячейки листа записываете значения пустых переменных?
maxim863book1.Worksheets("îáù").Range("C" & t).Value = n
book1.Worksheets("îáù").Range("C" & t).Offset(0, 1).Value = m
Надо, наверное, так:
Код: vbnet
1.
2.
3.
4.
5.
6.
'запоминаем в переменные значения из ячеек
n = book1.Worksheets("îáù").Range("C" & t).Value
m = book1.Worksheets("îáù").Range("C" & t).Offset(0, 1).Value

OldName = n: NewName = m
Name OldName As NewName


и зачем вообще переменные n и m? Вы их используете только как промежуточное звено, которое никакой вменяемой роли в коде не играет. Можно сразу так:
Код: vbnet
1.
2.
3.
OldName = book1.Worksheets("îáù").Range("C" & t).Value
NewName = book1.Worksheets("îáù").Range("C" & t).Offset(0, 1).Value
Name OldName As NewName


ну и неплохо бы следить за тем, чтобы файл OldName был в папке. Т.е. сделать проверку:
Код: vbnet
1.
2.
3.
4.
5.
OldName = book1.Worksheets("îáù").Range("C" & t).Value
If dir(OldName,16) <> "" then
NewName = book1.Worksheets("&#238;&#225;&#249;").Range("C" & t).Offset(0, 1).Value
Name OldName As NewName
end if



P.S. При копировании кодов с русскими буквами меняйте раскладку ПК на русскую - тогда не будет этих кракозябр невменяемых в кодах.
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668322
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
Переделал код , но рез-ат прежний
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Sub Кл()
 
Dim OldName, NewName
Dim book1 As Workbook
Dim t As Long
 

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\виз.xlsx")
For t = 3 To 5

   OldName = book1.Worksheets("общ").Range("C" & t).Value
   NewName = book1.Worksheets("общ").Range("C" & t).Offset(0, 1).Value
   
   Name OldName As NewName
   
   OldName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Откуда": NewName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Куда"
   'Откуда - папка ,где нах-ся файлы
   'Куда - папка , в кот-ую нужно файлы переестить
   
   Name OldName As NewName

Next t
book1.Close

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668339
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежний - это ошибка на первом переименовании? Или все-таки на втором.
Второе работать не будет, если "Откуда" - это папка, Нужно указывать имя файла.
Что касается первого - опять же MsgBox OldName, NewName и смотрим
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668639
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Ок
OldName=1 NewName =1
Имя файла указал , ошибка в первом выражении
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Sub Кл()
 
Dim OldName, NewName
Dim book1 As Workbook
Dim t As Long, m As Long, n As Long
 

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\виз.xlsx")
For t = 3 To 5

   n = book1.Worksheets("общ").Range("C" & t).Value
   m = book1.Worksheets("общ").Range("C" & t).Offset(0, 1).Value
   
   OldName = n
   NewName = m
   MsgBox n
   MsgBox m
   Name OldName As NewName
   
   OldName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Откуда\" + n + ".xlsm"
   NewName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Куда\" + m + ".xlsm"
   
   Name OldName As NewName

Next t
book1.Close

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668649
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxim863OldName=1 NewName =1
Имя файла указал , ошибка в первом выраженииНу так у тебя есть файл по имени "1" без расширения в текущем каталоге? Покажи тогда уж скриншот проводника. И зачем ты пытаешься переименовать файл сам в себя?
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668661
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Файл есть
Сам в себя- потому что это часть таблицы (там будет 200 разных значений)
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668673
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxim863Файл естьНе вижу файла "1", есть файл "1.xlsm" (или что там у тебя). Если так не понятно - включи в винде просмотр расширений файлов
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668802
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
То есть в таблице должно быть
1.xlsm
4.xlsm
12.xlsm ?
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39668989
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxim863Shocker.Pro,
То есть в таблице должно быть
1.xlsm
4.xlsm
12.xlsm ?Как хочешь, я же не знаю твоей задачи. Во втором переименовании ты же добавляешь программно расширение.
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39669281
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Идею понял ,осталось дореализовать
выскакивает ошибка R-t error 13 Type mismatch в строке
Код: vbnet
1.
OldName = "" + n + ".xlsm"


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Sub Кл()
 
Dim OldName, NewName
Dim book1 As Workbook
Dim t As Long, m As Long, n As Long
 

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\виз.xlsx")
For t = 3 To 5

   n = book1.Worksheets("общ").Range("C" & t).Value
   m = book1.Worksheets("общ").Range("C" & t).Offset(0, 1).Value
   
   OldName = "" + n + ".xlsm"
   NewName = "" + m + ".xlsm"
   
   Name OldName As NewName

   OldName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Откуда\" + n + ".xlsm"
   NewName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Куда\" + m + ".xlsm"
   
   Name OldName As NewName

Next t
book1.Close

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39669300
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Эту ошибку починил , но затем снова вернулась исходная
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Sub Кл()
 
Dim OldName As String, NewName As String
Dim book1 As Workbook
Dim t As Long, m As Long, n As Long
 

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\виз.xlsx")
For t = 3 To 5

   n = book1.Worksheets("общ").Range("C" & t).Value
   m = book1.Worksheets("общ").Range("C" & t).Offset(0, 1).Value
   
   OldName = CStr(n) & ".xlsm"
   NewName = CStr(m) & ".xlsm"
   
   Name OldName As NewName

   OldName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Откуда\" + n + ".xlsm"
   NewName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Куда\" + m + ".xlsm"
   
   Name OldName As NewName

Next t
book1.Close

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39669308
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxim863Эту ошибку починил , но затем снова вернулась исходная
Код: vbnet
1.
Msgbox Curdir
...
Рейтинг: 0 / 0
Переименование нескольких книг
    #39669328
maxim863
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Эврика !
Теперь работает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Sub Кл()
 
Dim OldName As String, NewName As String
Dim book1 As Workbook
Dim t As Long, m As Long, n As Long
 

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\виз.xlsx")
For t = 3 To 5

   n = book1.Worksheets("общ").Range("C" & t).Value
   m = book1.Worksheets("общ").Range("C" & t).Offset(0, 1).Value
   
   OldName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Откуда\" & n & ".xlsm"
   NewName = "E:\Super M\Проект ставки\Поиск решения\Усов 7\вспомогательные программы\Книга в лист\Отборные условия\Куда\" & m & ".xlsm"
   
   Name OldName As NewName


Next t
book1.Close

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

End Sub
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Переименование нескольких книг
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]