引用:microsoft ado ext.2.x for ddl and securityJfe七二检测 Jfe七二检测 Jfe七二检测 代码:Jfe七二检测 Public Sub1_10()Jfe七二检测 Dim myCat As New ADOX.Catalog ‘定义catalog变量Jfe七二检测 Dim myTable As New ADOX.Table ‘定义table变量Jfe七二检测 Dim myColumn As ADOX.Column ‘定义column变量Jfe七二检测 Dim myIdx As New ADOX.Index ‘定义index变量Jfe七二检测 Dim ws As Worksheet ‘定义worksheet变量Jfe七二检测 Dim i As Long Jfe七二检测 Dim myData As String ‘Jfe七二检测 myData = ThisWorkbook.Path & "\学生成绩管理.mdb" ‘指定数据文件Jfe七二检测 ‘判断是否有保存数据表资料的工作表存在Jfe七二检测 On Error Resume NextJfe七二检测 Set ws = Worksheets("数据表设计")Jfe七二检测 On Error GoTo 0Jfe七二检测 If ws Is Nothing ThenJfe七二检测 MsgBox "没有数据表资料存在!", vbCritical, "警告"Jfe七二检测 Exit SubJfe七二检测 End IfJfe七二检测 ws.ActivateJfe七二检测 ‘建立与数据库的连接Jfe七二检测 myCat.ActiveConnection = "provider=microsoft.jet.oledb.4.0;" _Jfe七二检测 & " data source=" & myDataJfe七二检测 ‘删除已经存在的数据表Jfe七二检测 On Error Resume NextJfe七二检测 myCat.Tables.Delete ws.Range("B1").ValueJfe七二检测 On Error GoTo 0Jfe七二检测 ‘建立索引Jfe七二检测 myIdx.Name = "PrimaryKey"Jfe七二检测 myIdx.PrimaryKey = TrueJfe七二检测 ‘开始根据工作表的数据创建数据表Jfe七二检测 With myTableJfe七二检测 .Name = ws.Range("B1").ValueJfe七二检测 For i = 4 To ws.Range("A65536").End(xlUp).RowJfe七二检测 Set myColumn = New ColumnJfe七二检测 With myColumnJfe七二检测 .Name = ws.Cells(i, 1).ValueJfe七二检测 .Type = GetConstNo(ws.Cells(i, 2).Value)Jfe七二检测 If ws.Cells(i, 3).Value > 0 ThenJfe七二检测 .DefinedSize = ws.Cells(i, 3).ValueJfe七二检测 .Attributes = adColNullableJfe七二检测 End IfJfe七二检测 End WithJfe七二检测 .Columns.Append myColumnJfe七二检测 If ws.Cells(i, 4).Value = "是" ThenJfe七二检测 myIdx.Columns.Append ws.Cells(i, 1).ValueJfe七二检测 End IfJfe七二检测 NextJfe七二检测 End WithJfe七二检测 ‘将表定义进行保存Jfe七二检测 myCat.Tables.Append myTableJfe七二检测 myTable.Indexes.Append myIdxJfe七二检测 ‘弹出信息Jfe七二检测 MsgBox "数据表<" & ws.Range("B1").Value & ">创建成功!", _Jfe七二检测 vbOKOnly + vbInformation, "创建数据表"Jfe七二检测 ‘关闭连接,并释放变量Jfe七二检测 Set ws = NothingJfe七二检测 Set myIdx = NothingJfe七二检测 Set myTable = NothingJfe七二检测 Set myCat = NothingJfe七二检测 End SubJfe七二检测 Jfe七二检测 ‘将工作表中定义的数据类型(字符串型)转换为字段类型VBA常量,即编制一个自定义函数GetConstNoJfe七二检测 Function GetConstNo(myStr As String) As IntegerJfe七二检测 Select Case myStrJfe七二检测 Case "adBigInt": GetConstNo = 20Jfe七二检测 Case "adBinary": GetConstNo = 128Jfe七二检测 Case "adBoolean": GetConstNo = 11Jfe七二检测 Case "adBSTR": GetConstNo = 8Jfe七二检测 Case "adChapter": GetConstNo = 136Jfe七二检测 Case "adChar": GetConstNo = 129Jfe七二检测 Case "adCurrency": GetConstNo = 6Jfe七二检测 Case "adDate": GetConstNo = 7Jfe七二检测 Case "adDBDate": GetConstNo = 133Jfe七二检测 Case "adDBTime": GetConstNo = 134Jfe七二检测 Case "adDBTimeStamp": GetConstNo = 135Jfe七二检测 Case "adDecimal": GetConstNo = 14Jfe七二检测 Case "adDouble": GetConstNo = 5Jfe七二检测 Case "adEmpty": GetConstNo = 0Jfe七二检测 Case "adError": GetConstNo = 10Jfe七二检测 Case "adFileTime": GetConstNo = 64Jfe七二检测 Case "adGUID": GetConstNo = 72Jfe七二检测 Case "adIDispatch": GetConstNo = 9Jfe七二检测 Case "adInteger": GetConstNo = 3Jfe七二检测 Case "adIUnknown": GetConstNo = 13Jfe七二检测 Case "adLongVarBinary": GetConstNo = 205Jfe七二检测 Case "adLongVarChar": GetConstNo = 201Jfe七二检测 Case "adLongVarWChar": GetConstNo = 203Jfe七二检测 Case "adNumeric": GetConstNo = 131Jfe七二检测 Case "adPropVariant": GetConstNo = 138Jfe七二检测 Case "adSingle": GetConstNo = 4Jfe七二检测 Case "adSmallInt": GetConstNo = 2Jfe七二检测 Case "adTinyInt": GetConstNo = 16Jfe七二检测 Case "adUnsignedBigInt": GetConstNo = 21Jfe七二检测 Case "adUnsignedInt": GetConstNo = 19Jfe七二检测 Case "adUnsignedSmallInt": GetConstNo = 18Jfe七二检测 Case "adUnsignedTinyInt": GetConstNo = 17Jfe七二检测 Case "adUserDefined": GetConstNo = 132Jfe七二检测 Case "adVarBinary": GetConstNo = 204Jfe七二检测 Case "adVarChar": GetConstNo = 200Jfe七二检测 Case "adVariant": GetConstNo = 12Jfe七二检测 Case "adVarNumeric": GetConstNo = 139Jfe七二检测 Case "adVarWChar": GetConstNo = 202Jfe七二检测 Case "adWChar": GetConstNo = 130Jfe七二检测 Case Else: GetConstNo = -1Jfe七二检测 End SelectJfe七二检测 End FunctionJfe七二检测 Jfe七二检测