|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.05.2023, 11:31 | #1 |
Регистрация: 08.02.2009
Сообщений: 5
|
Работа с файлами, содержащими символ "?"
Добрый день.
Столкнулся со следующей проблемой. Буду признателен за помощь в решении, т.к. после 2-х дневного поиска в Интрнет и ChatGPT ответа не нашёл. Есть макрос, который среди прочего осуществляет коирование фалов из одной папки в другую. Перенос осуществляется командой Call FileCopy("C:\1\й.pdf", "C:\2\й.pdf"). Всё работает до тех по, пока не встречается особенный файл. Пример: "й.pdf". Здесь символ "й" записан как "и?". То есть, если скопировать имя этого файла в ячейку Excel и разложить его по кодам символов, то получится, что имя записано так: знак символ код символа знак символа 1 и 232 и 2 ̆ 63 ? 3 . 46 . 4 p 112 p 5 d 100 d 6 f 102 f При переборе файлов в папке функцией Dir при нахождении такого файла возвращаеся имя "и?.pdf". Функция Call FileCopy("C:\1\й.pdf", "C:\2\й.pdf") или Call FileCopy("C:\1\и?.pdf", "C:\2\й.pdf"). Выдают ошибку - файл не найден (bad file name or number). Каким образом в VBA работать с таким фалом (копировать, переносить, удалять, переименовывать)? |
11.05.2023, 13:45 | #2 | |
Форумчанин
Регистрация: 17.10.2018
Сообщений: 184
|
Кто-то пошутил. У вас не "й" (и краткое), а "и" с диакритическим знаком "Кра́тка".
Например впереди два одинаковых текста, но по-разному отображаются в разных местах: й ≠ й ≠ и̃ и̃я креве́дка, йо́жик, Ей огу́рец не́ нра́вится. Код:
Цитата:
Эх, эволюция, бессердечная ты сука! © Шелдон, ТБЗ. Первая же ссылка на проблему в гугле говорит зачем желательно не использовать Dir. Ответ:
Последний раз редактировалось jillitil; 11.05.2023 в 16:09. |
|
11.05.2023, 17:04 | #3 |
Регистрация: 08.02.2009
Сообщений: 5
|
jillitil, Разумеется, жалобу кинул. Потому что Ваш ответ - это умничание и ничего более. И ворой ответ - то же. Если всё так просто - ответьте по-нормальному. Если не заете ответ - для чего засорять чат? Вдруг найдутся действительно компетентные люди. Переменовать файлы в ручную - не вариант (иначе бы не писал вопрос). Файлы формирую не я, их формирует сторонняя программа.
Никогда не понимал таких людей. Ничего по сути не говорят, зато пишут с умным видом текст, корый всячески подчёркивает некомпетентость автора и глубочайший интеллект отвечающего. И да, не знаю я ответа на этот вопрос. И признаю это, задавая этот вопос. Педполагаю, что у всех разная специализация - всего знать невозможно. А вы, веротяно, увидев это решили постебаться над автором вопроса. Ну что же, успехов в самоутверждении. Последний раз редактировалось Alexandr Popov; 11.05.2023 в 17:16. |
11.05.2023, 22:53 | #4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Попробуйте посмотреть на имя вашего файла иначе:
1. Поместите такой файл и ещё какой либо в папку, например C:\abc 2. Напишите скрипт в Блокноте: Код:
3. Запустите скрипт в командной строке Запуск Командной строки, например: Win+R --> cmd --> Ok Перейти в папку: Код:
Код:
PS: 1. Не набирайте символ '>' - это из строки-приглашения командной строки. 2. Скрипт набирайте в Блокноте и сохраняйте в кодировке ANSI Сохранить как ... --> Выбрать кодировку ANSI (поле "Кодировка" в нижней части формы)
Как-то так, ...
|
12.05.2023, 07:58 | #5 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
даладна! дабытьтакованиможит! o_O шок шок
|
12.05.2023, 09:32 | #6 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 11
|
Сам файл будет или нет? Если вы знаете имя и символы варьирующиеся, то попробуйте предусмотреть варианты, составить имя по номерам символов (не знаю, как там в эксель раскладываются тексты на символы, но в VBA через ChrW лучше): Если в папке есть файл, к примеру, ChrW(1080) & ChrW(774) & ".pdf", то копировать его, если есть ChrW(1081) & ".pdf" - то этот, если ChrW(1080) & ChrW(771) & ".pdf" - соответственно. Это номера символов, приведённые пользователем jillitil. Какой у вас точно сказать нельзя, скорее всего проблема в разности кодировки программы подающей вам файлы.
|
12.05.2023, 11:20 | #7 | |
Регистрация: 08.02.2009
Сообщений: 5
|
Цитата:
Помогло следующее (файлик находится в папке C:\1\): Dim fso As Object Set fso = CreateObject("Scripting.FileSystemO bject") fso.CopyFile "C:\1\и" & ChrW(774) & ".pdf", "C:\1\new" Последний раз редактировалось Alexandr Popov; 12.05.2023 в 11:50. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" | Sandakan01 | Помощь студентам | 1 | 24.02.2016 03:20 |