shyrik_m » 22.07.2005 (Пт) 8:00
Подключаешь в EXCEL библиотеку DAO 3.6
(Tools > References... > Mikrosoft DAO 3.6 Object Library)
СОЗДАЙ ФОРМУ
НА ФОРМЕ РАЗМЕСТИ 5-ТЬ ТЕКСТБОКСОВ И ПЕРЕИМЕНУЙ
TextBox1 в Tex1 (в свойстве - name) и с оставшимися поступи также TextBox2 в Tex2, ...
(ЭТО ЧТОБЫ ТЕБЕ В КОДЕ НЕ КОПАТЬСЯ) ПРИМЕР ВЗЯТ ИЗ VB6 И РАБОТАЕТ ТАКЖЕ ХОРОШО И В EXCEL
Поле Tex1 создано для ввода пути и имени файла
пр: C:\Mоя база
Поле Tex2 для ввода названия таблицы
Поля Tex3, Tex2 и Tex3 - для ввода названий полей
Помести на форме кнопку Command1 (переименуй тотже CommandButton1)
Теперь осталась сама начинка!
Приведенный код занимает много места из-за содержания описания значения различных констант, это не будет лишним и дает дополнительную ясность и понимае того что творим.
Помести этот код в форму, там есть коментарии, все будет ясным и понятным.
К О Д
Private Sub Command1_Click()
Dim db As DAO.Database
If Right(Text1, 4) <> ".mdb" Then Text1 = Text1 & ".mdb"
Файл = Text1
Set db = DAO.CreateDatabase(Файл, dbLangCyrillic) '"C:\test.mdb"
'мы создали пустую базу
Dim tbd As DAO.TableDef
Set tbd = db.CreateTableDef(Text2) '"Таблица1"
'мы создали пустую таблицу
'Константа Значение Описание
'dbBigInt 16 Большой целочисленный.
'dbBinary 9 Двоичные данные.
'dbBoolean 1 Логический. Может принимать значения True/False.
'dbByte 2 Байт. Это число от 0 до 255.
'dbChar 18 Текстовый фиксированной длины. Длина устанавливается параметром size.
'dbCurrency 5 Денежный. Может содержать до 15 знаков слева от запятой и до 4 справа.
'dbDate 8 Дата и время.
'dbDecimal 20 Десятичный.
'dbDouble 7 Числовой тип двойной точности.
'dbFloat 21 С плавающей точкой.
'dbGUID 15 128 битный глобальный универсальный идентификатор.
'dbInteger 3 Целочисленный.
'dbLong 4 Длинный целочисленный.
'dbLongBinary 11 Длинные двоичные данные.
'dbMemo 12 В поле этого типа можно хранить любые данные.
'dbNumeric 19 Числовой.
'dbSingle 6 Числовой тип одинарной точности.
'dbText 10 Текстовый. Длина устанавливается параметром size. Может содержать больше 255 символов.
'dbTime 22 Время.
'dbTimeStamp 23 Дата и время.
'dbVarBinary 17 Двоичный фиксированной длины.
'Но из этих констант с базами MSAccess работают _
только dbBoolean, dbByte, dbInteger, dbLong, _
dbCurrency, dbSingle, dbDouble, dbDate, dbText, _
dbLongBinary, dbGUID и dbMemo. _
Остальные константы припасены для баз данных _
другого формата (под управлением ODBCDirect).
'Параметр size определяет размер поля.
Dim fld As DAO.Field
Set fld = tbd.CreateField(Text3, dbText, 50)
tbd.Fields.Append fld
Set fld = tbd.CreateField(Text4, dbLong, 15)
tbd.Fields.Append fld
Set fld = tbd.CreateField(Text5, dbBoolean)
tbd.Fields.Append fld
'создали поля таблицы "столбики"
'Поля созданы. Осталось создать индексы. _
Для создания индекса используется метод _
CreateIndex объекта TableDef. _
Он создаёт экземпляр объекта Index и возвращает его. _
Метод CreateIndex имеет всего один параметр - name. _
Он устанавливает имя создаваемого индекса.
Dim inx As DAO.Index
Set inx = tbd.CreateIndex("Index1")
'Добавим в индекс поля. _
Создадим поле с помощью метода CreateField объекта _
Index и добавим поле в его коллекцию Fields. _
В качестве аргумента name метода CreateField _
задаём имя имеющегося поля, которое добавляем в индекс.
Set fld = inx.CreateField("Поле2")
inx.Fields.Append fld
'Всё готово. _
Теперь нужно добавить таблицу в коллекцию TableDefs _
и дело в шляпе!
db.TableDefs.Append tbd
db.TableDefs.Refresh
'Теперь, когда база данных уже создана, _
закрываем объекты и освобождаем память.
'rs.Close
db.Close
Set rs = Nothing
Set inx = Nothing
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
Unload Me
End Sub