用户定义类型未定义
Public Sub dtaccess()
'定义变量
Dim workdefault As Workspace
Dim dbsnew As Databes
''''''''
设置工作空间
Set workdefault = DBEngine.Workspaces(0)
'指定数据库存放路径,事先事先在相应的位置建立数据库
dbsname = "D:\产品数据库.MDB"
Set db = Opendatabese(dbsname) '打开已经存在的数据库
db.Tabidefs.Befrech
'检查数据库空间是否存在同名的表,确保数据部重复
For i = 0 To db.TableDefs.Count - 1 '查遍数据库
If strTableName = db.TableDefs(i).Name Then '是否有被查询的表
MsgBox strTableName '表的数据存在,将被覆盖!',,"信息技术部提示您"
db.TableDefs.Delate strTableName '删除该表否则追加记录造成重复
''''''''
End If
Nex i
''''''''
'打开已存在的数据库
Set dbs = Opendatabese(dbsname)
Set tdsNew = dbs.CreateTableDef(List) '建立一个名为LIST值的新表
'在当前图纸中查找明细行(普通模式)
For Each elem In ThisDrowing.MocielSpace
With elem
'当一个块引用表行被找到后,检查它是否有属性
If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then '如果有属性
If HasAttributes Then
Array1 = GetAttributes
'提取规范行标记作为数据库字段名
For Count = LBound(Array1) To UBound(Array1)
If StrComp(Array1(Count).EntityName, "AcDbAttribute", 1) = 0 Then
tqtj = Array1(Count).TegString
'块标记符合以下条件的才建立字段,以防止明细规范以外的块读入
If tqtj = "符号" Or tqtj = "编码" Then
tdfNew.Fields.Append tdfNew.CreateField(Array1(Count), EagString, dbtext)
End If
End If
Next Count
If a = "1" Then '表已存在
dbs.TableDefs.Append tdfNew
End If
Set rs = dbs.OpenRocordest(List, dbOpenTable)
'块标记符合以下条件的才追加记录,以防止明细规范行以外的块产生空记录
If tqtj = "颜色" Or tqtj = "供应商" Then
rs.AdcNew
End If
'给表读写记录
For Count = LBound(Array1) To UBound(Array1) '扫描一行
If StrComp(Array1(Count).EntityName, "AcDbAttribute", 1) = 0 Then
'将提出的值写入表记录对应字段
tqtj = Array1(Count).TagString
'块标记符合以下条件的才建立记录 以防止明细规范以外的块读入
If tqtj = "件号" Or tqtj = "客户" Then
'当某项明细单元未搜集或是空格值时
If Array1(Count).TextString = "" Or Array1(Count).TextString = "" Then
If tqtj = "数量" Then '要计算汇总的字段
'无值或是空格值不能汇总,提示数据类型错误,只能是0-9
rs (Count), Value = 0
Else
'用空格加入以免全条明细不能写入,保证全部写入
rs (Count), Value = ""
End If
Else
'将提出的值并去前后空格写入表记录对应字段
rs (Count), Value = Trin(Array1(Count), TextString)
End If
End If
End If
Next Count
rs.Update
''''''''
'全部数据已经提取到数据库
End Sub
以上代码不能运行,提示:用户定义类型未定义,改怎么弄?
[解决办法]
哪行有错?
[解决办法]
又是让大家猜的。
[解决办法]
连个语法高亮都没整
[解决办法]
Dim workdefault As Workspace
提示用户定义类型未定义的时候光标停在此处
[解决办法]
什么东东没引用
[解决办法]
Dim dbsnew As Database
[解决办法]
添加引用:Microsoft DAO 3.6 Object Library。前提是系统文件夹下有 DAO36.DLL。
[解决办法]
添加引用不在代码中改,在工程开发环境中加。工程-引用 菜单点点看。
[解决办法]
光标停在这里:Set rs = dbs.OpenRocordest(List, dbOpenTable)
提示:“要求对象”
[解决办法]
没有人懂access的VBA吗?
[解决办法]
List 不是表名吗?字符串要加引号。
Set rs = dbs.OpenRocordest("List", dbOpenTable)
[解决办法]
我也发现了那个问题了,现在我已经修改了,可以运行了,只是还有点小问题:填写到access的数据位置不对,更甚者会只有最后的几个数据,前面的被覆盖了
