Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Переименование нескольких книг / 18 сообщений из 18, страница 1 из 1
28.06.2018, 10:38
    #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
28.06.2018, 11:17
    #39667022
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
maxim863Выскакивает ошибка : Run-time error '54' File not found в строкена какой из них? Их две. Как подсвечивать текст в исходниках описано тут Как мне оформить свое сообщение?

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

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

Да и вообще этот код работать не будет.
Даже если файл по имени "n" существует и будет переименован в "m", то во втором проходе цикла он уже не будет существовать и будет "файл не найден"
...
Рейтинг: 0 / 0
29.06.2018, 10:39
    #39667517
maxim863
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
Shocker.Pro,
Наверное так оно и происходит , только не очень понимаю почему
...
Рейтинг: 0 / 0
29.06.2018, 10:42
    #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
02.07.2018, 13:53
    #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
02.07.2018, 14:24
    #39668339
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
Прежний - это ошибка на первом переименовании? Или все-таки на втором.
Второе работать не будет, если "Откуда" - это папка, Нужно указывать имя файла.
Что касается первого - опять же MsgBox OldName, NewName и смотрим
...
Рейтинг: 0 / 0
03.07.2018, 10:39
    #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
03.07.2018, 10:56
    #39668649
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
maxim863OldName=1 NewName =1
Имя файла указал , ошибка в первом выраженииНу так у тебя есть файл по имени "1" без расширения в текущем каталоге? Покажи тогда уж скриншот проводника. И зачем ты пытаешься переименовать файл сам в себя?
...
Рейтинг: 0 / 0
03.07.2018, 11:08
    #39668661
maxim863
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
Shocker.Pro,
Файл есть
Сам в себя- потому что это часть таблицы (там будет 200 разных значений)
...
Рейтинг: 0 / 0
03.07.2018, 11:25
    #39668673
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
maxim863Файл естьНе вижу файла "1", есть файл "1.xlsm" (или что там у тебя). Если так не понятно - включи в винде просмотр расширений файлов
...
Рейтинг: 0 / 0
03.07.2018, 13:58
    #39668802
maxim863
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
Shocker.Pro,
То есть в таблице должно быть
1.xlsm
4.xlsm
12.xlsm ?
...
Рейтинг: 0 / 0
03.07.2018, 16:59
    #39668989
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
maxim863Shocker.Pro,
То есть в таблице должно быть
1.xlsm
4.xlsm
12.xlsm ?Как хочешь, я же не знаю твоей задачи. Во втором переименовании ты же добавляешь программно расширение.
...
Рейтинг: 0 / 0
04.07.2018, 10:10
    #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
04.07.2018, 10:43
    #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
04.07.2018, 10:51
    #39669308
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переименование нескольких книг
maxim863Эту ошибку починил , но затем снова вернулась исходная
Код: vbnet
1.
Msgbox Curdir
...
Рейтинг: 0 / 0
04.07.2018, 11:12
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Переименование нескольких книг / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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