"Компьютерная газета" №26, 1999 год

Register now - Попробуй заработать
Get your 39$ - Получи чек! | FREE web site and $20 cash over & over!

At title page - НаверхReturn at title page - Возврат на основную страницу

Использование  Excel 97 - не сядьте на мель!

Одной из многочисленных полезных функций   Excel 97 является сохранение таблиц в форматах различных баз данных. Это можно применить, например, для обмена данными между книгой Excel и другими программами. Недавно мне пришлось решать следующую задачу - в книге на множестве листов помесячно рассчитываются вредные выбросы в атмосферу от производства и налоги за них, а результаты необходимо передавать в вышестоящее ведомство в виде базы .DBF, пустой образец которой уже имеется.

Сначала все кажется очень просто. Открываем в Excel свою книгу, а потом и эту базу, которая представляется как единственный лист. Щелкаем правой кнопкой мыши по названию этого листа, выбираем действие "Переместить/Скопировать" и в списке открытых документов выбираем свою книгу - <Ok>. Теперь в своей книге имеем дополнительный лист, в первой строке которого прописаны названия полей базы данных.

Далее рутина - копируем нужные столбцы данных расчетов, переходим в дополнительный лист, выбираем пункт меню "Правка\Специальная вставка", отмечаем  "Только значения" - <Ok>. Потом  все запишем в виде макроса, а сейчас продолжаем.

Сохраняем дополнительный лист как базу DBF, потом сохраняем опять как книгу Excel. Запускаем старый добрый Norton 5.0 в сессии DOS, выбираем полученную базу DBF, нажимаем F3 - запускается dbview для просмотра - и . . . ничего не видим!!! Поля, структура - все как надо, но никаких записей с результатами нет - база пуста.  Это было настолько неожиданно, что я не поверил собственным глазам.

В недоумении внимательно повторяем все операции снова и снова и наблюдаем все тот же печальный результат. После нескольких дней начинается уже помутнение рассудка и небольшая паника. Обязательства взяты, работу надо выполнить, а Excel не хочет. От горя покопался в руководстве Microsoft  по программированию в Visual Basic и убедился в стойкости афоризма "За деревьями и леса не видать".

Тут и выясняется одна ма-а-ленькая деталь. Когда Excel открывает базу DBF, он "запоминает", сколько там было полей. И сколько чего бы вы туда не писали, он сохранит в формате DBF ровно столько полей, сколько там было раньше. А если вы по наивности открыли пустую базу DBF, то он и сохранит ее как пустую, даже если там будут заполнены все ячейки до единой.

Теперь, когда Слава Богу все ясно, нужно всего-то добавить достаточно пустых записей в первоначальную базу DBF и заново повторить все операции - открыть, переместить, скопировать, вставить, сохранить ...

Средствами MS Office делается примитивно просто - запускаем Access, создаем пустую базу данных, в ней выбираем закладку "Таблицы", нажимаем "Создать" и выбираем "Связанная таблица". В диалоге выбора файла БД указываем тип файлов *.DBF и свою базу данных - <Ok>. Диалог выбора индексного файла можно отменить. Теперь открываем таблицу для редактирования, добавляем сотню-другую записей с помощью любимой народом клавиши  <Enter>, сохраняем и закрываем Access.

Заново все прокручиваем в Excel, проверяем - все в порядке. Правда, с записями получился перебор - кроме заполненных, в базе сохранен и весь запас пустых записей. Но с этим похоже придется мириться - по крайней мере лучше иметь слишком много чем совсем ничего.

Можно, конечно поработать побольше и получить более приемлемый результат. С помощью Нортоновского dbview по клавише F2 получаем подробную структуру БД. Создаем новый лист, в ячейках первой строки вручную прописываем имена полей базы данных (без пробелов и не более 10-ти сомволов). Затем выделяем  столбец с именем поля и через меню "Формат/Ячейки" устанавливаем тип данных поля и количество знаков после запятой для числового типа. Обязательно установите требуемую ширину столбца - целое значение ширины воспринимается Excel как количество знаков для данных поля базы. И так для каждого столбца с именем поля БД.

Теперь можно вставить нужные данные и сохранить как базу DBF, только потом обязательно сохраните как книгу Excel и для последующей работы открывайте именно эту книгу, а не базу DBF, иначе опять не сможете записать дополнительные записи.

Возможно, эти  моменты  и описаны где-нибудь в руководстве, но покажите мне пальцем на того человека, который прочитал абсолютно все, что там есть - лично у меня просто нет столько времени. Надеюсь, статья вам поможет.

Victor Makovchik

At title page - НаверхReturn at title page - Возврат на основную страницу