Power Designer通过导入Excel创建数据表结构
这段VBA代码旨在通过读取Excel文件中的数据,在当前活动模型()中创建相应的数据库表结构。它首先检查是否有活动模型以及Excel是否安装,然后遍历Excel工作表中的数据行,根据特定列的值来创建表和列,并为其赋予相应的属性。
·
代码功能概述
这段VBA代码旨在通过读取Excel文件中的数据,在当前活动模型(ActiveModel
)中创建相应的数据库表结构。它首先检查是否有活动模型以及Excel是否安装,然后遍历Excel工作表中的数据行,根据特定列的值来创建表和列,并为其赋予相应的属性。
代码详细解析
- 初始化与检查
Option Explicit
Dim mdl ' the current model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no Active Model"
End If
Dim HaveExcel
Dim RQ
RQ = vbYes 'MsgBox("Is Excel Installed on your machine?", vbYesNo + vbInformation, "Confirmation")
If RQ = vbYes Then
HaveExcel = True
' Open & Create Excel Document
Dim x1
Set x1 = CreateObject("Excel.Application")
x1.Workbooks.Open "xxxxxx.xlsx"
x1.Workbooks(1).Worksheets("Sheet1").Activate
Else
HaveExcel = False
End If
Option Explicit
:强制显式声明所有变量,提高代码的可读性和可维护性。- 声明并尝试获取当前活动模型
mdl
,若模型不存在则弹出提示框。 - 通过设置
RQ = vbYes
假设Excel已安装(原本代码中的MsgBox
询问被注释掉),若确认Excel已安装,创建Excel应用程序对象x1
,打开指定的Excel文件并激活其第一张工作表。
- 主处理过程
a
Sub a(x1, mdl)
Dim rwIndex
Dim tableName
Dim colname
Dim table
Dim col
Dim count
'可根据字段多少修改值(200)的大小
For rwIndex = 1 To 200 Step 1
With x1.Workbooks(1).Worksheets("Sheet1")
'MsgBox "生成数据表结构共计1 ="+CStr(.Cells(2,2).Value ), vbOK + vbInformation, "表"
'当值为空自加一行rwIndex + 1
If.Cells(rwIndex, 1).Value = "" Then
rwIndex = rwIndex + 1
If.Cells(rwIndex, 1).Value = "" Then
Exit For
End If
End If
'当第四列为空时,为表table的name、code、comment赋值,观察我们的excel表格,不难发现正是第一行,占三格。
If.Cells(rwIndex, 4).Value = "" Then
Set table = mdl.Tables.CreateNew
table.Name =.Cells(rwIndex, 1).Value
table.Code =.Cells(rwIndex, 2).Value
table.Comment =.Cells(rwIndex, 3).Value
rwIndex = rwIndex + 1
count = count + 1
Else
colName =.Cells(rwIndex, 1).Value
Set col = table.Columns.CreateNew
'字段中文名
col.Name =.Cells(rwIndex, 1).Value
'字段英文名
col.Code =.Cells(rwIndex, 2).Value
'注解
col.Comment =.Cells(rwIndex, 3).Value
'数据类型
col.DataType =.Cells(rwIndex, 4).Value
End If
End With
Next
MsgBox "生成数据表结构共计" + CStr(count), vbOK + vbInformation, "表"
Exit Sub
End Sub
- 定义多个变量用于循环、存储表和列的相关信息以及计数。
For rwIndex = 1 To 200 Step 1
:循环遍历Excel工作表的1到200行,可根据实际数据量调整上限。- 在循环中,使用
With
语句简化对Excel工作表单元格的引用。 - 如果当前行第一列的值为空,将
rwIndex
自增1,并再次检查该列值,若仍为空则退出循环,这是为了跳过空行。 - 当第四列的值为空时,在活动模型中创建一个新表,并根据当前行的第一、二、三列的值设置表的
Name
、Code
和Comment
属性,同时更新rwIndex
和count
。 - 当第四列的值不为空时,在当前表中创建一个新列,并根据当前行的各列值设置列的
Name
、Code
、Comment
和DataType
属性。 - 循环结束后,弹出提示框显示创建的数据表结构数量。
注意事项
- Excel文件路径:代码中
x1.Workbooks.Open "xxxxxx.xlsx"
需替换为实际的Excel文件路径和文件名。 - 错误处理:代码中对于Excel文件打开失败、对象创建失败等情况未进行全面的错误处理,在实际应用中可添加相应的错误处理机制,以提高代码的健壮性。
- 数据验证:没有对从Excel读取的数据进行有效性验证,例如数据类型是否符合数据库要求等,可能导致创建表结构时出现错误。在实际使用中,应添加必要的数据验证逻辑。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)