Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 465
от 27.01.2007, 21:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 237, Экспертов: 36
В номере:Вопросов: 2, Ответов: 4


Вопрос № 72057: Здравствуйте. Вопрос: что необходимо прописать в макросе, что бы сохранить числа находящиеся, например в ячейках B8:J28 (на листе "bb" в книге c:/pr50.xls) в текстовый файл с разделителями пробел (*.prn) в заданную папку c:/dat/w1.prn. ...
Вопрос № 72082: Добрый день, уважаемые эксперты! Подскажите, пожалуйста, как приделать на VB6 что-то типа конвертера т.е. имея на входе текстовый файл с разделителями, получить на выходе dbf-ник. Или такое возможно только через посредничество программ сторонних ...

Вопрос № 72.057
Здравствуйте.
Вопрос: что необходимо прописать в макросе, что бы сохранить числа находящиеся, например в ячейках B8:J28 (на листе "bb" в книге c:/pr50.xls) в текстовый файл с разделителями пробел (*.prn) в заданную папку c:/dat/w1.prn. Причем сохранить не весь лист "bb" а только выделенные ячейки B8:J28.И после сохранения опять вернуться на лист "bb".
Сергей
Отправлен: 22.01.2007, 11:37
Вопрос задал: Kas (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Dimm77
Здравствуйте, Kas!
Код работает при условии, что активный лист и есть bb в c:pr50.xls. Сначала обрабатываем массив ячеек, затем пишем это всё в файл с соответствующим форматированием. Удач!

Приложение:

---------
Цель жизни - жизнь.

Ответ отправил: Dimm77 (статус: 1-ый класс)
Ответ отправлен: 22.01.2007, 12:19

Отвечает: Alec Perle
Здравствуйте, Kas!
В Excel (да и не только) есть возможность записать последовательность действий в виде макроса - меню Сервис-Макрос-Записать
Провести вручную требуемые действия (создание нового листа для сохранения, копирование данных на этот лист, соответственно сохранение в нужном формате и удаление уже не нужного листа), а затем посмотреть.
В частности вот что получилось у меня:

Приложение:

---------
Пессимист - это хорошо информированный оптимист (а оптимист - хорошо проинструктированный пессимист)

Ответ отправил: Alec Perle (статус: 2-ой класс)
Ответ отправлен: 22.01.2007, 23:03
Оценка за ответ: 5


Вопрос № 72.082
Добрый день, уважаемые эксперты!
Подскажите, пожалуйста, как приделать на VB6 что-то типа конвертера т.е. имея на входе текстовый файл с разделителями, получить на выходе dbf-ник. Или такое возможно только через посредничество программ сторонних разработчиков типа Access или Excel? Открыть файл и считать из него данные не вызывает затруднений, а вот как потом организовать выгрузку в dbf-файл?
Спасибо!
Отправлен: 22.01.2007, 13:48
Вопрос задал: Wino Veritas (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dimm77
Здравствуйте, Wino Veritas!
Имеет смысл почитать хелпы на спецификацию формата *.dbf. Попроще - http://alxsoft.narod.ru/SIxFormat.htm, поинтересней - http://www.ronyasoft.nm.ru/phonebook/dbfheader.html (описаны разные варианты формата dbf). Это если организовывать самому запись формата. Если же нет, то можно использовать встроенные объекты VB, позволяющие заполнить соответствующие поля и сохранить их в требуемом формате. Например - создать объект Workspace, использовать его метод CreateDatabase, потом создать там таблицу с нужными типами и количеством полей, затем заполнить её информацией. Однако Microsoft Jet хочет работать только со своим форматом.
Можно немного иначе, как описано в http://www.firststeps.ru/vb/r.php?34, там в строке ODBC-коннекта можно описать стандартный драйвер для dbf (правильную строку подключения можно посмотреть в системных источниках данных при попытке этот источник создать), и потом работать с этим объектом как с обычной ДБ. Есть ещё и сторонние компоненты для VB, но ими не пользовался, потому не буду врать.
---------
Цель жизни - жизнь.
Ответ отправил: Dimm77 (статус: 1-ый класс)
Ответ отправлен: 22.01.2007, 16:16
Оценка за ответ: 5

Отвечает: Vvvv
Здравствуйте, Wino Veritas!
Одним из вариантов для решения данного вопроса может быть связка VB6+ADO, для этого в референсах подключаем библиотеку Microsoft ActiveX Data Objects 2.7 Library ну или другой версии которую имеем, важно чтоб на компьютере клиента она присутствовала, установить можно с помощью MDAC соответствующей версии
Далее создаем три объекта adocon as new ADODB.connection; adocoM as new ADODB.command; adoRS as new ADODB.Recordset; через них и работаем, adocon объект доступа к базе данных, adocoM используется в тех случаях, когда не требуется возвращать источник данных; adoRS возвращает источник данных в котором можно добавлять, удалять и редактировать записи, а так же выводить на экран в различные гриды (есть специальные для АДО и отдельно для ДАО) ну и т.д.
Ниже примерчик, думаю разберёшся. В принцепе идея работает, проверял, главное творческий подход...

Приложение:

Ответ отправил: Vvvv (статус: 1-ый класс)
Ответ отправлен: 23.01.2007, 13:59
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое за ответ. С ADO работал и раньше, так что думаю затруднений не вызовет. Отдельное спасибо за приведённый пример - очень помогло разобраться.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.43 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное