Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 6
1

Использование в коде название листов и имен файлов на других языках

23.11.2015, 08:32. Показов 1195. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! есть большая проблема. Макрос не хочет открывать файлы имя которых написано на китайском.
Аналогично матерится при обращении к листу с китайскими иероглифами. Эта проблема как-то решается??

Код
Sub List_files()

    Application.ScreenUpdating = 0
    With ThisWorkbook
        '.Sheets(1).Range("A7:B" & Cells(Cells.Rows.Count, 1).Row).ClearContents
      MyPath = Range("c1").Value
         Mask = "*.xls*"
       myname = Dir(MyPath & Mask, vbDirectory)
        i = 6
      
            
    
        Do While myname <> ""
            If myname <> "." And myname <> ".." And myname <> ThisWorkbook.Name Then
                .Sheets("stat").Cells(i, 1) = myname
               ActiveSheet.Hyperlinks.Add Cells(i, 1), MyPath & myname, ""
                Set wb = Workbooks.Open(Filename:=MyPath & myname)
                
              
               .Sheets("stat").Cells(i, 3) = wb.Sheets("app").Range("b5")
               .Sheets("stat").Cells(i, 4) = wb.Sheets("app").Range("b6")
               .Sheets("stat").Cells(i, 5) = wb.Sheets("app").Range("b7")
              
               
                        
             
                
                wb.Close
                i = i + 1
                
          
            End If
            myname = Dir
        Loop

    End With

   
    Application.ScreenUpdating = 1
    
End Sub

Если я переименовываю название листа и файла на англ, код работает!! проблема в том что таких файлов очень много и переименовывать их в ручную совсем не вариант.
Есть какие-то может надстройки для мультиязычного програмирования??? я в этом деле новичек, просто упрощаю сбор статистики, извините если не совсем правильно сформулировал.

Добавлено через 54 минуты
При попытки вставки китайских иероглифов в ВБА редактор, вставляет вместо них знаки "???"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 08:32
Ответы с готовыми решениями:

Название месяца функции datename(mm,getdate()) на других языках.
Добрый день всем. Подскажите, пожалуйста, как можно вывести названия месяцев на разных языках? ...

Использование dll в других языках
Добрый вечер. Ситуация такая, у меня есть dll(библиотека классов) написанная на C#. Смогу ли я...

Использование переменной с других файлов
Привет всем! А как сделать так, чтобы переменную определенную в одном .cpp файле можно было бы...

Использование функций и констант из других файлов
Использование функций и констант из других notebook-ов. Например у меня множества констант и...

9
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
23.11.2015, 09:49 2
Интересно. Не сталкивался в китайским. А что пишет макрорекрдер?
0
1082 / 521 / 142
Регистрация: 27.02.2013
Сообщений: 1,501
23.11.2015, 10:39 3
А в винде может китайский установить?
0
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 13
23.11.2015, 10:57 4
почитайте статью, вдруг поможет: http://www.umao.ru/system/maos... fonts.html
0
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 6
23.11.2015, 11:02  [ТС] 5
Пишет знаки вопроса, китайские шрифты установлены, я могу печатать даже в самом екселе, но в редакторе не хочет.. Как вообще в редактор ВБА добавлять новые языки? русский же печатает..
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
23.11.2015, 11:14 6
перебрать файлы можно без указания имени книг
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub test()
Dim P, F, S, A, PP, FIL, lr
  Dim Folder As String
  Dim workWb As Workbook
  Dim Wb As Workbook
  Dim sh As Worksheet
  Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
  Set workWb = ActiveWorkbook  'Запоминаем активную книгу
 Folder = ActiveWorkbook.Path
 P = ActiveWorkbook.Path
  'Начинаем читать файлы из папки
   For Each FIL In FSO.GetFolder(P).Files
     If InStr(1, FIL.Name, ".xls", vbTextCompare) > 0 Then
        If InStr(1, FIL.Name, workWb.Name) = 0 Then
            Set Wb = Workbooks.Open(FIL)
 
 
        End If
     End If
   Next FIL
   MsgBox "OK", 64, ""
End Sub
А вот с именем листа пока не знаю. А что? листов будет несколько в каждой книге и они могут быть в разной комбинации? то есть расположены по разному. По индексу обратиться не получится?

Добавлено через 7 минут
Function GetFolderPath здесь не нужна. Случайно зацепил
1
1082 / 521 / 142
Регистрация: 27.02.2013
Сообщений: 1,501
23.11.2015, 11:29 7
А здесь справка от Майкрософт https://support.microsoft.com/en-us/kb/166431
Я так понял,что это проблема ихняя
1
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 6
23.11.2015, 11:54  [ТС] 8
Да с именем листа можно по нумерации, но просто пользователи если поменяют порядок листов, то сбор статистики не будет работать, спасибо попробую ваш код!!
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
23.11.2015, 12:07 9
Можно перебрать все листы по индексу и поискать известную уникальную метку.
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
23.11.2015, 15:41 10
leskris, Русская кодировка в Excel
0
23.11.2015, 15:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2015, 15:41
Помогаю со студенческими работами здесь

Список имен файлов без имен папок и скрытых файлов
Здравствуйте Я пытаюсь вывести список имен файлов в текущей папке без отображения имен папок и...

Использование имен предопределенных объектов в качестве имен переменных
Есть код: #include &lt;iostream&gt; using namespace std; void func() { int cout; cout &lt;&lt;cout...

Аналог оператора 'in' в других языках
Господа небольшой вопрос, в шарпе есть contains, который в принципе является аналогом in, но...

Работа с сопрограммами и подпрограммами на других языках
Подскажите есть ли в стандартах std или иные кросплатформенные методы работы с сопрограммами и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru