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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.07.2008, 16:07   #1
Len@
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 11
По умолчанию Поиск *.csv и *.xls файлов

Можно ли осуществить автоматический поиск файлов формата *.csv через VBA? Если да, то где можно посмотреть пример реализации данной задачи.
У нас есть пример поиска файлов *.xls. Может возможно изменить его для поиска csv.

Dim filename As String
Dim files As String
filename = Dir("E:\")
While filename <> ""
If files = "" Then
files = filename
Else
files = files + Chr(13) + filename
End If
filename = Dir
Wend
MsgBox files

Для начала выводим просто на экран, чтобы было понятно, ищет или нет. Выполняем по нажатию кнопки в Excel'е


И можно ли изменить расширение файла с *.csv на *.xls?

Последний раз редактировалось Len@; 24.07.2008 в 16:24.
Len@ вне форума
Старый 24.07.2008, 19:30   #2
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

Хм... Данный код находит также и файлы *.doc
Это не есть хорошо.
dsapa вне форума
Старый 24.07.2008, 20:15   #3
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Стрелка Зайти в VBE и...

dirF1
Там всё подробно прописано, и с примерами. Я лучше не объясню.
дмидми вне форума
Старый 25.07.2008, 07:34   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Len@, Вы просто ленивы. Есть куча конкретных примеров даже в этом топике.
Можно, например так:
Код:
Sub SearсhFiles()
    
    Dim myName As String, Msg As String
    myName = Dir("D:\Temp\" & "*.csv") 'Подставьте Ваш путь к файлу.
    Do While myName <> ""
        Msg = Msg & myName & vbCrLf
        myName = Dir
    Loop
    If Msg = "" Then MsgBox "Искомых файлов нет" Else MsgBox "Найдены файлы:" & vbCrLf & Msg
    
End Sub
Также, можно добавить фильтр по атрибутам файла, проверку существования заданного пути и т.д. Если нужно подробнее, то Вам дмидми уже указал путь.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 25.07.2008, 08:08   #5
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Восклицание Не можно, а нужно

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Также можно добавить фильтр по атрибутам файла
Позволю себе уточнить: прописать атрибуты значит не добавить фильтр, но проделать дырки в фильтре:
"If omitted, returns files that match pathname but have no attributes" (Подчёркнуто мной. - ДмиДми).

Поэтому в приведённом примере нужно как минимум
myName = Dir("D:\Temp\" & "*.csv", vbNormal + vbArchive)
и, скорее всего, еще + vbReadOnly
дмидми вне форума
Старый 25.07.2008, 12:33   #6
Len@
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 11
По умолчанию

Большое Спасибо!
вы нам очень помогли!
Len@ вне форума
Старый 25.07.2008, 12:45   #7
Len@
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 11
По умолчанию

Еще один вопрос.
Какая функция отвечает за открытие файла с расширением .csv? Дело в том, что получилось написать скрипт только на нормальное открытие файла с расширением xlsx, а файлы csv открываются с использованием разделителя ";", т.е. все запихивается в один столбец.
При открытии файла не через скрипт, он открывается нормально.
Вот этот скрипт, написанный с использованием справки. Поскольку с VBA мы работаем 3-й день, то мы не понимаем, что конкретно нужно искать для работы с csv...

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open "путь\имя.xlsx"
Set xlBook = xlApp.ActiveWorkbook
Set xlSheet = xlBook.Worksheets(1)
xlApp.Visible = True
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Len@ вне форума
Старый 25.07.2008, 13:05   #8
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Радость А макрорекордер на что?

Цитата:
Сообщение от Len@ Посмотреть сообщение
При открытии файла не через скрипт, он открывается нормально.
Включите макрорекордер
(Сервис -- Макрос -- Начать запись...),
откройте файл *.csv вручную,
остановите запись и посмотрите, как это делается.
дмидми вне форума
Старый 25.07.2008, 13:17   #9
Len@
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 11
По умолчанию

То же самое. Открывает вручную нормально, при использовании скрипта макроса, опять же использует ";"
Len@ вне форума
Старый 25.07.2008, 14:36   #10
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Злость Привет от Билла Гейтса!

Любопытная обнаружилась особенность.
Если расширение .csv, то ёксель плюёт на все параметры, но достаточно сменить расширение на .txt, и тот же самый файл прекрасно открывается командой
Код:
    Workbooks.OpenText Filename:= _
        "C:\хламCSV.txt" _
        , Origin:=xlWindows _
        , DataType:=xlDelimited _
        , Semicolon:=True
дмидми вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск файлов student_63 Общие вопросы Delphi 6 07.03.2008 19:00
Поиск файлов LeoN Общие вопросы Delphi 5 25.11.2007 22:54
поиск файлов KORN Компоненты Delphi 3 12.10.2007 05:42
Поиск файлов necky Общие вопросы Delphi 10 31.08.2007 00:27