1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Excel 2003 и 2007

Тема в разделе "Программирование", создана пользователем Zebra21, 14.01.10.

  1. Zebra21

    Zebra21 Активный участник

    16.919
    98
    Как известно, в VBA 2007 убрали (временно, но нет ничего более постоянного...) FileSearch. Чем заменить, кто посоветует? Dir не слишком удобен, даже очень неудобен...
     
  2. zador

    zador Участник

    171
    0


    А чем неудобен?
    --------------------------
    iPath = "C:\Temp\"
    iFileName = Dir(iPath & "*.xls")
    Do While iFileName <> ""
    'тут что-то делаете с каждым файлом,
    iFileName = Dir 'передача названия другого файла
    Loop
    ---------------------------
    как вариант:
    А если сделать в 2003, а использовать в 2007? По-моему FileSearch есть в 2007, только к нему доступ прикрыли, значит работать должен?
     
  3. Zebra21

    Zebra21 Активный участник

    16.919
    98
    zador, этот вариант тоя знаю, только неудобный он - неясно, сколько в папке файлов, какой размерности переопределять массив и ещё кое каких атрибутов нет. Вот мне и интересно, есть ли что нибудь похожее на FileSearch...

    :) В том то и проблема, что всё сделанное на 2003 не идёт в 2007, стал бы я огород городить... Убрали и заблокировали.
     
  4. RedFraer

    RedFraer Активный участник

    1.425
    3
    задействуй объект FileSystemObject и далее функцию проверки наличия файла FileExists

    вот к примеру эта функция вернет в текстовом значении имя файла которое было в параметре с постфиксом о его существовании

    Function Report_File_Search(FileName)
    Dim fso, msg
    Set fso = CreateObject("Scripting.FileSystemObject")
    If (fso.FileExists(FileName)) Then
    msg = FileName & " существует."
    Else
    msg = filespec & " не существует."
    End If
    Report_File_Search = msg
    End Function

    или вот функция которая вернет количество файлов в папке
    Function Report_File_Count(FileName)
    Dim fso, msg, folder
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\")
    msg = folder.Files.Count
    Report_File_Count = msg
    End Function


    а вообще объект FileSystemObject настолько обширен что я и не знал о существовании FileSearch, как то не нужен был.
     
  5. Zebra21

    Zebra21 Активный участник

    16.919
    98
    RedFraer, ну, вообще то обошёлся Dir. ;) Просто количество файлов мне не очень интересно, интересны их имена.
     
  6. Redrik

    Redrik Активный участник

    14.021
    0
    Хочется задать сокраментальный вопрос - А в ОпенОффисе эта функция работает ?
    Слыхал, что ООО полностью совместим с ВБА.