Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2016, 09:18   #1
Kreadlling
Форумчанин
 
Аватар для Kreadlling
 
Регистрация: 03.09.2009
Сообщений: 116
По умолчанию Найти файл по имени в visual basic если он создан в формате utf-8

Здравствуйте. Такая ситуация – создается отчет из программы sppa t-3000 в формате utf-8 как файл csv. В программе требуется организовать поиск файлов по названию. Но когда сравниваешь название файла со строкой текста, (например str = “Основные показатели*”, где * - это продолжение названия файла, то есть найти все файлы, которые начинаются с «основные показатели…») то он ее не находит, хотя другие файлы созданные на windows находит.

Не подскажете как организовать такой поиск? Наверное требуется данную строку str = “Основные показатели*” перекодировать в utf-8 и с этой строкой сравнить название файла.

более подробно нужно как то найти файл по имени если он в формате utf-8. Если имя файла "основные показатели_4454" в формате utf-8, то какая должна быть строка текста с которой нужно сравнить имя данного файла?

Последний раз редактировалось Kreadlling; 07.10.2016 в 09:46. Причина: не полный вопрос
Kreadlling вне форума Ответить с цитированием
Старый 07.10.2016, 09:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В программе требуется организовать поиск файлов по названию. Но когда сравниваешь название файла со строкой текста, (например str = “Основные показатели*”, где * - это продолжение названия файла, то есть найти все файлы, которые начинаются с «основные показатели…») то он ее не находит
покажите код, как Вы ищете.

ну и конкретную версию Excel неплохо озвучить, в разных версиях были отличия
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.10.2016, 13:18   #3
Kreadlling
Форумчанин
 
Аватар для Kreadlling
 
Регистрация: 03.09.2009
Сообщений: 116
По умолчанию

Код:
Private Sub Command1_Click()
    Dim MyExcel As Object
    Set MyExcel = CreateObject("Excel.Application")
   ' MyExcel.Visible = True
  '  MyExcel.Workbooks.Add
 
    
    
 Dim fs, f, s, stroka
 Dim MyTime
 Dim MyDate
 Dim time_Prover, time_created, timeDate_created
 Dim arrPutFile(10) As String
 Dim arrNameFile(10) As String
 Dim arrTimeCreation(10) As String
 Dim arrOnlyHour(10) As String
 Dim put_files
 Dim Put_files_withNamefile
 Dim put_file_s_chert
 Dim str_probel
 Dim kolvo_files
 Dim name_list(10) As String
 Dim time_creatZamenadvoet(10) As String
 Dim index_TEK_FILE
 Dim connect As String 'connection при извлечении из csv
 Const xlDelimited = 1  'xlDelimited это константа и ее надо приравнивать 1 или 2 в зависимости от того нужно извлекать файл с разделителями
 'или нет
 Const xlTextQualifierDoubleQuote = 1 'xlTextQualifierDoubleQuote это константа и ее надо приравнивать 1 или 2 в зависимости от
 'того нужно поставить в качестве разделителя двойные или одинарные кавычки
 
 Dim zapros
 
 str_probel = ""
 put_files = "C:\Documents and Settings\Admin\Рабочий стол\основные показатели"
 put_file_s_chert = put_files & ""
 
    Set fs = MyExcel.FileSearch
        With fs
            .LookIn = put_files 'Путь файлов
            .SearchSubFolders = True
            .FileName = "Основные показатели*"
            
            'MyTime = Time
            'MsgBox MyTime
            MyDate = Date
           ' MsgBox MyDate
            
            time_Prover = "11"
            
            If .Execute() > 0 Then
                kolvo_files = .FoundFiles.Count 'Количество найденных файлов и соответственно количество данных в массиве
                MsgBox "There were " & kolvo_files & _
                " file(s) found."
                
            'Цикл в котором ищутся файлы и сохраняется
            'время, путь файла, имя файла и час создания
                For i = 1 To kolvo_files  'Цикл от 1 до кол-ва найденных файлов
                    arrPutFile(i) = MyExcel.FileSearch.FoundFiles(i)
                    Put_files_withNamefile = arrPutFile(i)
                    'Имя самого файла arrNameFile(i)
                    arrNameFile(i) = Replace(Put_files_withNamefile, put_file_s_chert, str_probel)
                 '   MsgBox arrNameFile(I)
                '    MsgBox arrPutFile(I)
                    Set fs = CreateObject("Scripting.FileSystemObject")
                    Set f = fs.GetFile(arrPutFile(i)) 'Получить доступ к файлу по пути файла arrPutFile(i)
                    timeDate_created = f.DateCreated 'Дата и время создания файла
                    arrTimeCreation(i) = Right(timeDate_created, 8) 'Время (с часами и минутами) создания файла
                    time_creatZamenadvoet(i) = Replace(arrTimeCreation(i), ":", "_") 'Замена : во времени на знак подчеркивания
                  '  MsgBox (time_creatZamenadvoet(i))
                 '   MsgBox (arrTimeCreation(i))
                  '  s = "Created: " & timeDate_created 'f.DateCreated
                   ' MsgBox s
                   
                    arrOnlyHour(i) = Mid(timeDate_created, 12, 1) 'Время (час) создания файла
                   ' MsgBox arrOnlyHour(i)
                    
                    'Проверка что час создания равен заданному
                   ' If time_created = time_Prover Then
                  '      MsgBox ("Время создания 11 часов")
                  '  End If
                Next i
            Else
                MsgBox "There were no files found."
            End If
            End With
            
            MyExcel.Workbooks.Add 'создание новой рабочей книги
            MyExcel.Visible = True
           
            For i = 1 To kolvo_files
                If arrOnlyHour(i) = "0" Then
                    MyExcel.ActiveWorkbook.Sheets("Лист1").Select
                    name_list(1) = "Основные показатели " & time_creatZamenadvoet(i)
                    MyExcel.ActiveWorkbook.Sheets("Лист1").Name = name_list(1)
                    connect = "TEXT;" & arrPutFile(i)
                    '"TEXT;C:\Documents and Settings\Admin\Рабочий стол\Образец CSV.csv"
 
            Set resul_zapros = MyExcel.ActiveSheet.QueryTables.Add(Connection:= _
            connect, _
            Destination:=MyExcel.ActiveSheet.Range("A1"))
            
            With resul_zapros
            .Name = name_list(1)
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = True
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileOtherDelimiter = "^"
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
            
            End With
                    Exit For
                End If
            Next i
    MyExcel.Quit
End Sub
В этом куске кода сравниваю

Код:
With fs
            .LookIn = put_files 'Путь файлов
            .SearchSubFolders = True
            .FileName = "Основные показатели*"
В этой строке

Код:
.FileName = "Основные показатели*"
Строка содержит "Основные показатели*" - со звездочкой, то есть нужно найти файлы которые начинаются строкой "Основные показатели*",
а продолжение может быть любым

Последний раз редактировалось Kreadlling; 07.10.2016 в 13:19. Причина: неправильно ввел
Kreadlling вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реально ли перевести UTF-16 в UTF-8, если да то как? FleXik Общие вопросы Delphi 7 28.09.2014 12:11
Как найти файл в папке, если в имени папки есть точка? Zis67 Общие вопросы Delphi 9 03.10.2012 20:32
найти файл зная лишь часть его имени DeDoK Общие вопросы Delphi 3 16.12.2010 21:06
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Сохранить файл в блокноте в формате UTF-8 Alar Общие вопросы Delphi 6 04.04.2008 05:29