Private Sub Command1_Click()
Dim nameOLD, nameNew As String
File1.Path = Text1.Text
File1.Pattern = "*.bmp"
For i = 0 To File1.ListCount - 1
nameOLD = Left(File1.List(i), InStr(1, File1.List(i), ".bmp") - 1)
nameNew = ""
For ii = 1 To Len(nameOLD) 'перебираем буквы названия
myletter = Mid(nameOLD, ii, 1)
If Asc(myletter) < 222 And Asc(myletter) > 209 Then
myletter = 1
End If
nameNew = nameNew & myletter
Next
'MsgBox nameNew
Name File1.Path & "\" & nameOLD & ".bmp" As File1.Path & "\" & nameNew1 & ".bmp"
Next
End Sub
Можно ли исправить имя файла?
Нельзя ли подсказать, хотя бы алгоритм, или намек на алгоритм, чтобы как -то подойти к такой задачке? И какие команды для такой цели могут быть доступны в среде VBA(VB) (типа rename, dir или что-нить в таком роде)?
Спасибо.
P.S. Ответ "соображай сам" тоже принимается :(
Удачи!
Цитата: Tever
Да, вот пример.
Удачи!
Удачи!
Спасибо. Сейчас будем разбирать "по косточкам". Что там делается...
:)
[COLOR="Green"]nameNew = nameNew & IIf(Asc(Mid(nameOLD, ii, 1)) > 127, "1", Mid(nameOLD, ii, 1))[/COLOR]
можно ли задать диапазон asc'ов (вроде это надо именно здесь указать), чтобы менялись только символы с номерами с 210 по 223 (т.е. заглавные буквы с "Т" по "Я")?
А пока все символы превращаются в единички.
Узнал почему. Большинство русских символов имеет значение больше 210. Поэтому хорошо бы задать диапазон.
Спасибо.
Выкрутился вот так:
Код:
nameNew = nameNew & IIf(Asc(Mid(nameOLD, ii, 1)) >209 And Asc(Mid(nameOLD, ii, 1)) < 222, "1", Mid(nameOLD, ii, 1))
Цитата: Tever
В одну строчку элегантнее и чуть быстрее работает :) . Вот так:
Код:
nameNew = nameNew & IIf(Asc(Mid(nameOLD, ii, 1)) >209 And Asc(Mid(nameOLD, ii, 1)) < 222, "1", Mid(nameOLD, ii, 1))
Да, да, что-то именно такое я и предполагал. А в разных строках по кускам собирать переменные - это несолидно. Может со временем начну лучше соображать :o .