Найти файл по имени в visual basic если он создан в формате utf-8
Не подскажете как организовать такой поиск? Наверное требуется данную строку str = “Основные показатели*” перекодировать в utf-8 и с этой строкой сравнить название файла.
более подробно нужно как то найти файл по имени если он в формате utf-8. Если имя файла "основные показатели_4454" в формате utf-8, то какая должна быть строка текста с которой нужно сравнить имя данного файла?
Код:
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 SettingsAdminРабочий столосновные показатели"
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 SettingsAdminРабочий столОбразец 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
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 SettingsAdminРабочий столосновные показатели"
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 SettingsAdminРабочий столОбразец 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 = "Основные показатели*"
.LookIn = put_files 'Путь файлов
.SearchSubFolders = True
.FileName = "Основные показатели*"
Код:
.FileName = "Основные показатели*"
а продолжение может быть любым