Страницы: 1
RSS
Непонятные символы в имени файла, Как достать данные?
 
Всем привет.
Столкнулся с непонятной проблемой.
В папке встречаются файлы с непонятным символом в имени. Ни Asc ни AscW не определяют его. Пишут 63 код
По клику файл открывается нормально. А вот из макроса не получается.
Изначально открывал стандартно и доставал значения
Код
            fl = pt & Chr(92) & fl ' собираем полный путь
            Set WBi = Workbooks.Open(fl) 'открываем книгу

но файл с такими символами не открываются. Вываливается ошибка
С GetObject то же не получается
Пытался перехватить ошибку и переименовав открыть копию и затем удалить - то же не получается
Ни FeleCopy ни FSO не копируют.
Последнее что пришло на ум: достать данные не открывая. Хотя бы формулой.
Но и тут засада. Из таких файлов и формула не достаёт. Даже не пишется в ячейку.
Кусок кода
Код
Do While Len(fl) > 0 'перебираем файлы в папке с активной книгой
    On Error Resume Next            ' Откладываем перехват ошибок.

    If fl <> ActiveWorkbook.Name Then  'если не активный файл, то делаем
        If Len(fl) > 0 Then ' если есть файл - работаем с ним
           f2 = fl
           Debug.Print f2
            With Sho 'выбираем лист для сокращения записей в коде
                lr = .Cells(.Rows.Count, 4).End(xlUp).Row + 1
                
                .Cells(lr, 4).Formula = "='" & pt & "[" & f2 & "]" & "Чек-лист" & "'!" & "$C$7"
                Debug.Print Len(.Cells(lr, 4).Formula), .Cells(lr, 4).Formula

и результат в дебаггере
Цитата
8598ММБГрушко Чек-лист_МПР_ Ур  2.xlsx
61           ='G:\4\[8598ММБГрушко Чек-лист_МПР_ Ур 2.xlsx]Чек-лист'!$C$7

8598ММБКозлова_?M01-CZ01-005_Чек-лист_МПР_ Ур. 2.xlsx
0  
Вот этот вопросик и не даёт!
как побороть?
Во вложении один из таких файлов
Изменено: Александр Моторин - 15.03.2016 12:00:09
 
А перебрать все файлы и открыть совпавший по маске?
 
Интересно. В проводнике этот символ не отображается, а в фаре - отображается. В фаре удалось переименовать. Может делать переименование через cmd?
---
И архив скачался с таким именем:
Цитата
8598ММБ_Галиева%E2%80%8EM01-CZ01-004_Чек-лист_МПР_Ур. 1.rar
Изменено: JayBhagavan - 15.03.2016 12:08:31

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
У меня скачался в таком виде 8598ММБ_Галиева%E2%80%8EM01-CZ01-004_Чек-лист_МПР_Ур. 1.rar
Разархивировался в 8598ММБ_Галиева#M01-CZ01-004_Чек-лист_МПР_Ур. 1.xlsx
Поскольку у меня Excel 2003, то через конвертер файл открылся нормально
 
В имени архива символа нет.
При распаковке появляется
В таталкомандере переименовывать можно
файлы перебираются по маске
Код
fl = Dir(pt & "\*.xls*") 'файл по маске *.xls* в папке с файлом

Но открываются не все.
Те, которые не открываются не получается переименовать ни FileCopy ни FSO
И формула не достаёт данные из закрытой книги. А из открытой дотаёт
Изменено: Александр Моторин - 15.03.2016 12:43:33
 
Цитата
Александр Моторин написал: В имени архива символа нет.
Выделите имя архива из Вашего сообщения, скопируйте и вставьте его в редактор фара. В блокноте не показывает.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Тотал показывает Только меняет на подчёркивание
Вопрос-то не в этом. Как побороть
 
Александр Моторин, я предлагаю батником переименовать или сделать копии оригиналов. Батник запускать из ВБА.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Надо пробовать.
Так тоже не переименовывает

Код
            OldName = pt & fl
             NewName = "C:\test.xlsx"
             Kill NewName
             Name OldName As NewName

Точнее не все файлы переименовывает. Только те где нет этого символа
 
Цитата
JayBhagavan написал: предлагаю батником переименовать
Тут вопрос: а руками-то переименовывается средствами ОС? если нет - батник тоже не поможет. Есть предположение, что файл был создан в отличное от Windows ОС, что и породило проблему.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Я не пользуюсь средствами ОС для работы с файлами.
Проверил. Скопировал что видит ОС и тотал
Код
8598ММБ_ГалиеваM01-CZ01-004_Чек-лист_МПР_Ур. 1
8598ММБ_Галиева‎M01-CZ01-004_Чек-лист_МПР_Ур. 1

Сайт тоже не показывает символ.
Блокнот показывает
 
Цитата
The_Prist написал: переименовывается средствами ОС?
Руками в проводнике переименовал.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Александр Моторин написал
Во вложении один из таких файлов
Но у меня-то этот файл открывается
 
Цитата
Но у меня-то этот файл открывается
Макросом? Или не внимательно прочитано?!
Цитата
По клику файл открывается нормально. А вот из макроса не получается.
 
Цитата
Александр Моторин написал:
Ни Asc ни AscW
У меня выдал AscW(М) = 8206

Поправка - после копирования имени файла на лист. В коде 63
Изменено: RAN - 15.03.2016 22:09:55
 
У меня срабатывает как я предлагал (не мог на работе проверить):
Код
Sub tt()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TheFolder = FSO.GetFolder("e:\tmp\Александр Моторин\")    'Каталог
    Set TheFiles = TheFolder.Files
    For Each AFile In TheFiles
        If InStr(AFile, "xls") > 0 Then
            'MsgBox AFile.Path
            Set wb = Workbooks.Open(AFile.Path)
        End If
    Next
End Sub

Если посмотреть на Afile - то там есть этот ? в пути и имени, но это не мешает открыть файл.
Изменено: Hugo - 15.03.2016 23:27:12
 
RAN, Hugo не поверите, но я сам в шоке
Я пробовал и копировать файл разными способами (в том числе и FSO) и открывал и через Open и через GetObject.
Постоянно вылетала ошибка. Не знаю что стряслось (комп, правда перезагружал), но сейчас открывает.
И AscW определяет
20           ?              63            8206
И нормально достаёт данные и ? не мешает!
Чудеса в решете! По другому не скажешь.
Единственное на что могу грешить: на Dir. Перебирал в одной папке, а теперь понадобилось и во вложенных и перешёл на FSO.
Но ведь копировать FSO тогда тоже не хотела. И FileCopy не хотела
И AscW не определяла писала 63
В любом случае всем спасибо за помощь
Изменено: Александр Моторин - 16.03.2016 00:25:00
Страницы: 1
Наверх