На главную
 

ProGa - Внедрение ini-файла

      Для начала опишем проблему, с которой я лично сталкивался не раз, а вы можете столкнутся в ближайшее время (если это еще не произошло). Создавая пользовательское приложение будь то рабочая книга Excel или база данных Access, может возникнуть необходимость предварительной настройки работы этого приложения. Например, пользователь должен указать путь к файлу, который нужно импортировать.
      Программы в VBA не имеют возможности запоминать что-либо после их закрытия, т.е. несчастному пользователю придется каждый раз вводить путь к этому файлу (лично меня бы это задолбало быстро). Конечно, в Excel эту проблему можно решить с помощью записи пути на рабочий лист. Да это выход, но подход непрофессиональный.
      Предлагаю свое решение проблемы с помощью встроенного модуля класса. Модуль класса представляет собой почти обычный модуль, но служащий не для включения в него процедур пользователя, а для создания нового объекта. Технологию создания модулей класса я в ближайшее время опишу в другой статье, а пока научимся их практически применять.

      Для начала его нужно встроить:

  • Скачайте модуль класса по этой ссылке;
  • Откройте окно редактора VBA. В меню "Файл" выберите пункт "Импорт файла" и укажите свежескаченный модуль класса.
      Если все прошло нормально, то в в папке "Модули класса" менеджера проектов появится класс "IniFile". Теперь в своей программе Вы можете использовать этот класс для собственных нужд.

      Сформулируем конкретный пример. Вам нужно, чтобы при закрытии рабочей книги Excel значение переменных UserPath, UserName и UserAccount (они должны быть естественно глобальными, т.е. описанными в независимом модуле оператором public), записывалось в ini-файл с:\profile.ini. Первые две переменные пускай будут строчные, а третья - числовая.

      Для записи этих переменных в файл нужно вставить соответствующий код:

' Создаем новый экземпляр класса
Dim Profile as New IniFile

With ProFile

      'Задаем путь к файлу
      .Path="c:\profile.ini"

      'Открываем файл для записи
      .OpenFile false

      'Последовательно записываем данные:
      .WriteNext UserPath
      .WriteNext UserName
      .WriteNext UserAccount

      'Закрываем файл, т.е. записываем:
      .FileClose

End With

      Для чтения данных используется подобный код:

Dim Profile as New IniFile

With ProFile

      .Path="c:\profile.ini"

      'Открываем файл для чтения
      .OpenFile

      'Последовательно считываем данные:
      UserPath = .ReadNext
      UserName = .ReadNext
      UserName = CInt(.ReadNext) 'Преобразовываем в тип integer

      .FileClose

End With

Вот и все хитрости. Ниже приведен справочник свойств и методов.

Свойства:

      Path - Содержит (Задает) путь к ini-файлу
      FileEOF - Содержит значение True, если последний вызов метода ReadNext вернул последнюю строку файла

Методы:

      OpenFile([режим]) - открывает файл, указанный в свойстве Path. Если режим = True, то файл открется для чтения, если false - для записи. По умолчанию = True.
      CloseFile - закрывает файл. Особенно важно закрывать файл, открытый для записи. В этом случае метод сохраняет внесенные изменения.
      ReadNext - возвращает следующее значение записанное в файл. Результат метода всегда строчный, поэтому при необходимости его нужно преобразовать в нужный тип.
      WriteNext(Значение) - записывает аргумент в файл.

      Ну что я могу еще сказать, пользуйтесь на здоровье. :)

К началу На главную
Designed by ProGa ®
Hosted by uCoz