Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
25.05.2019, 17:33
|
|||
---|---|---|---|
|
|||
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
Добрый день Чтобы импортировать данные из файлов Excel использовал следующее: Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
Но сейчас приходят файлы в имени которых присутствует иероглифы и другие спец. символы. Во время запуска функции импорта в строке Код: vbnet 1.
возникает ошибка, т.е. окошко в котором Microsoft Office Access сообщает: нам не удалось найти файл ... Возможно он был перемещен, переименован или удалён? Пробовал смотреть название файла через MsgBox эти символы отображаются вопросительными знаками, как и при просмотре в области отладки (Immediate). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.05.2019, 21:37
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
bosse-sl, всегда можно "зайти с тыла" и решить проблему. Например, можно предварительно переименовывать файлы. Кста, если в аксе не сможете переименовать файл, то с этим прекрасно справится простейший bat файл, и пару строк команд дос (remove и т.д). Сам же батник можно запускать из под акса, после чего обращаться к переименованному файлу без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.05.2019, 22:04
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
bosse-slНо сейчас приходят файлы в имени которых присутствует иероглифы и другие спец. символы. проще решить проблему в самом поставщике файлов, чтобы не сейчас..., а всегда приходили файлы с именами в латинице и без спец символов ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 04:10
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
bosse-sl, можно использовать имена файлов в формате « 8.3 » ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 06:03
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
Ни Msgbox, ни Immediate не имеют полной поддержки unicode. Поэтому выводите путь на форму в тестовое поле или в таблицу, так будет корректно. Также VBA редактор также не имеет полной поддержки Unicode, поэтому не рекомендуется там писать что-либо символами отличными от ASCII, на не русском офисе это не будет работать с большой вероятностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 09:29
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
TarasiosНапример, можно предварительно переименовывать файлы. Если переименовывать нежелательно, то можно создать через cmd файл связь и работать с ней. Код: sql 1.
Панургbosse-sl, можно использовать имена файлов в формате « 8.3 »Если их создание включено. Некоторые администраторы отключают. И не совсем ясно, как их получать, чтобы работать адресно с файлами, а не со всеми по маске. Впрочем, это касается и первого способа. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 09:51
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
tunknownЕсли их создание включено. Некоторые администраторы отключают.Как отключили так и включат обратно. tunknownИ не совсем ясно, как их получать, чтобы работать адресно с файлами, а не со всеми по маске.Нипонял. Получаешь путь через GetShortPathName и работаешь как с обычным путём. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 10:05
|
|||
---|---|---|---|
|
|||
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
Да, для таких названий Dir не подходит, т.к. преобразует кодировку в Ansi. А вот FSO, который вы используете мимоходом - вполне справляется. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Кстати, какая необходимость для каждого файла открывать и закрывать Excel, если его можно открыть перед первым файлом и закрыть по завершении цикла. Скажу больше - не вижу необходимости вообще открывать Excel. На листе такой структуры можно открыть Recordset, проверить имена полей, прочитать данные и добавить записи в другой Recordset. А если в реалии строк гораздо больше, чем в примерах, то данные можно внести запросом на добавление. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 12:57
|
|||
---|---|---|---|
|
|||
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
Добрый день всем Прошу прощения, не имею возможности часто отвечать, поэтому сразу и всем. Tarasiosможно предварительно переименовывать файлы. …. с этим прекрасно справится простейший bat файлИнтересный подход, но боюсь я его не осилю. Раньше батники не писал, как понимаю там необходимо сделать цикл и перебирать все символы имени файла и удалять не читаемые. vmagпроще решить проблему в самом поставщике файлов, чтобы не сейчас..., а всегда приходили файлы с именами в латинице и без спец символовЭто мечты, добиться такой работы с отправителями файлов, с ним не проще, явные ошибки еле-еле исправляют. Панургbosse-sl, можно использовать имена файлов в формате « 8.3 »Спасибо за подсказку, но я не понимаю как применить (я пользователь, плохой "программист" - надо поставить правильно запятую - "казнить нельзя помиловать"). Как написал tunknown ...Некоторые администраторы отключают...С администраторами - на большинство вопросов получаешь ответ - "политика безопасности предприятия" - порой ощущение, что не всё могут понять/сделать, а фразой прикрываются. MrShinНи Msgbox, ни Immediate не имеют полной поддержки unicode. .... Также VBA редактор также не имеет полной поддержки Unicode, поэтому не рекомендуется там писать что-либо символами отличными от ASCII, на не русском офисе это не будет работать с большой вероятностью.Спасибо, сначала не понимал, что происходит, потом разобрался, да и пару форумов почитал. MrShin Поэтому выводите путь на форму в тестовое поле или в таблицу, так будет корректно. И так пробовал, но использовал получение пути через оператор Dir - а он оказывается преобразуетс всё в ANSI, так что не получалось получить правильное имя файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 13:25
|
|||
---|---|---|---|
|
|||
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
Спасибо, вроде, то что мне надо буду пробовать. Кривцов АнатолийДа, для таких названий Dir не подходит, т.к. преобразует кодировку в Ansi. К сожалению не знал Кривцов АнатолийА вот FSO, который вы используете мимоходом - вполне справляется. Раньше использовал данный код который мне предложил хороший человек, были странные файлы Excel в которых была структура в XML-формате, вроде так. И как бывает, дорабатывал, улучшал, но работало, пока вот сейчас не столкнулся. Кривцов АнатолийА если в реалии строк гораздо больше, чем в примерах ....Не только больше, но и структура сильно отличается, там необходимо перебирать листы (их от 5 до 10) и на каждом листе разная структура данных, там необходимо найти нужные столбцы, и т.д. Кривцов АнатолийКстати, какая необходимость для каждого файла открывать и закрывать Excel, если его можно открыть перед первым файлом и закрыть по завершении цикла. Об этом раньше не задумывался (в каком-то журнале, давно прочитал, анекдот: пришёл к программисту сын и спрашивает - Пап почему солнце всходит и заходит. Отец ему в ответ - Сына, пока оно работает не трогай.), пока работало, действительно надо-бы попробовать исправить, хотя пока не понимаю как. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 14:10
|
|||
---|---|---|---|
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
Tarasiosможно предварительно переименовывать файлы. …. с этим прекрасно справится простейший bat файлИнтересный подход, но боюсь я его не осилю. Раньше батники не писал, как понимаю там необходимо сделать цикл и перебирать все символы имени файла и удалять не читаемые. С батником могу помочь, там всё очень просто. Логика в том, что вы, судя по вашему описанию, не обрабатываете сразу несколько файлов, а по одному. То есть - файл пришёл, упал в определённую папочку. Есть хитрая команда Rename (Ren) (я ошибся с ремув). Она позволяет любое (!!!) название файла переименовать в любое новое название файла. Rename (ren) Изменяет имя файла или набора файлов. Синтаксис rename [диск:][путь] имя_файла_1 имя_файла_2 ren [диск:][путь] имя_файла_1 имя_файла_2 в вашем случае это будет выглядеть так. Создаёте каталог, куда падает исходный файл в формате xls и где вы его будете переименовывать. Например, C:\Транзит Создаёте текстовый файл, переобзываете его, например, в ИмяФайла.bat В нём пишете строку ren C:\Транзит *.xls НовИмя.xls Как бы и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2019, 15:53
|
|||
---|---|---|---|
|
|||
Vba отказывается работать с файлами в имени которых иероглифы и другие спец символы |
|||
#18+
bosse-slКривцов АнатолийА если в реалии строк гораздо больше, чем в примерах ....Не только больше, но и структура сильно отличается, там необходимо перебирать листы (их от 5 до 10) и на каждом листе разная структура данных, там необходимо найти нужные столбцы, и т.д. Как я понял из вашего кода, на всех листах 4 назаания столбцов присутствуют всегда. Предлагаю вариант: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Запускать в предложенном выше коде: Call ImportFromExcel(fl.Path) вместо вашей Call LoadExcel(fl.Path) Эта процедура открывает файл как БД - перебирает все таблицы/листы - проверяет имена первых двух столбцов (как у вас) и выполняет запрос на добавление в таблицу "Лист1" вышей БД. И так для каждого файла в папке. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=45&mobile=1&tid=1610681]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 138ms |
0 / 0 |