批量修改access列的名称的方法
Access表格中,如下图所示,想把列名称改为月份销量单价总价备注,但是有100个表格需要处理,一个一个改的工作量实在太大,请教各位大神,有没有简单的方法或者数据库的方式...
Access表格中 ,如下图所示,想把列名称改为 月份 销量 单价 总价 备注,但是有100个表格需要处理,一个一个改的工作量实在太大,请教各位大神,有没有简单的方法或者数据库的方式来更改,拜谢!!
展开
展开全部
高效批量修改ACCESS表列名,必须具备一定的前提。一是那些需要被修改的表名必须有规律。例如统一以固定的有效字符串开头或者结尾,按其他可识别的规律编写也行;二是这些表都有相同的结构。否则没办法批量修改,只能一张一张表进行修改了。
假设那些需要修改列名的表均以字符串“2013_"开头,原字段名分别为A, B,C, D, E
下面是用代码进行修改的示范案例,供参考。
由于ACCESS JET引擎既不不支持修改表名也不支持修改列名,因此无法以运行SQL数据定义查询的方式来修改字段名。下面代码使用ADO数据访问对象扩展类库ADOX来修改列名。
首先需要引用ADOX
引用方法:
打开VBE窗口
引用ADOX—— 菜单"工具"-> "引用 "--> 勾选Microsoft ADO Ext.2.7 for DDL ado Security 或更高版本,点击确定按钮
新建一个ACCESS窗体,添加一个命名按钮“COMMAND1” 为该按钮编写下列单击事件过程:
Private Sub Command1_Click()
Dim MyDB As New ADOX.Catalog
Dim Obj As ADOX.Table
Dim Col As ADOX.Column
MyDB.ActiveConnection = CurrentProject.Connection
For Each Obj In MyDB.Tables
If Obj.Name Like "2013_*" Then '其他形式的表名规律请修改这里Like "2013_*"
For Each Col In MyDB.Tables(Obj.Name).Columns
If Col.Name = "A" Then Obj.Columns("A").Name = "月份"
If Col.Name = "B" Then Obj.Columns("B").Name = "销量"
If Col.Name = "C" Then Obj.Columns("C").Name = "单价"
If Col.Name = "D" Then Obj.Columns("D").Name = "总价"
If Col.Name = "E" Then Obj.Columns("E").Name = "备注"
Next Col
End If
Next Obj
MsgBox "表列名批量修改完毕"
End Sub
保窗体后,点击命令按钮即可瞬间完成批量表列名的修改工作,字段A 改为"月份"、字段B
改为"销量"、字段C 改为"单价"、字段D改为"总价"、字段E 改为"备注"。已经修改过的列名不会再被修改,这样对于新导入的新表可以随时点击该按钮更改列名,而不用担心存在反复修改的问题。楼主可以按照自己的实际需求调整上面代码里的表名规律和新旧字段名即可。
这可是个高技术活,很少人能写出来的。能给加些分吗?
假设那些需要修改列名的表均以字符串“2013_"开头,原字段名分别为A, B,C, D, E
下面是用代码进行修改的示范案例,供参考。
由于ACCESS JET引擎既不不支持修改表名也不支持修改列名,因此无法以运行SQL数据定义查询的方式来修改字段名。下面代码使用ADO数据访问对象扩展类库ADOX来修改列名。
首先需要引用ADOX
引用方法:
打开VBE窗口
引用ADOX—— 菜单"工具"-> "引用 "--> 勾选Microsoft ADO Ext.2.7 for DDL ado Security 或更高版本,点击确定按钮
新建一个ACCESS窗体,添加一个命名按钮“COMMAND1” 为该按钮编写下列单击事件过程:
Private Sub Command1_Click()
Dim MyDB As New ADOX.Catalog
Dim Obj As ADOX.Table
Dim Col As ADOX.Column
MyDB.ActiveConnection = CurrentProject.Connection
For Each Obj In MyDB.Tables
If Obj.Name Like "2013_*" Then '其他形式的表名规律请修改这里Like "2013_*"
For Each Col In MyDB.Tables(Obj.Name).Columns
If Col.Name = "A" Then Obj.Columns("A").Name = "月份"
If Col.Name = "B" Then Obj.Columns("B").Name = "销量"
If Col.Name = "C" Then Obj.Columns("C").Name = "单价"
If Col.Name = "D" Then Obj.Columns("D").Name = "总价"
If Col.Name = "E" Then Obj.Columns("E").Name = "备注"
Next Col
End If
Next Obj
MsgBox "表列名批量修改完毕"
End Sub
保窗体后,点击命令按钮即可瞬间完成批量表列名的修改工作,字段A 改为"月份"、字段B
改为"销量"、字段C 改为"单价"、字段D改为"总价"、字段E 改为"备注"。已经修改过的列名不会再被修改,这样对于新导入的新表可以随时点击该按钮更改列名,而不用担心存在反复修改的问题。楼主可以按照自己的实际需求调整上面代码里的表名规律和新旧字段名即可。
这可是个高技术活,很少人能写出来的。能给加些分吗?
展开全部
100个表格全部都改成月份 销量 单价 总价 备注这样一样的模式吗?
如果是这样,先改一个,然后,复制这个表,然后粘贴,出现三个选项,选“只粘贴结构”取个表名,再把表中的数据复制过去就行了。
如果是这样,先改一个,然后,复制这个表,然后粘贴,出现三个选项,选“只粘贴结构”取个表名,再把表中的数据复制过去就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用副本来修改
Sub aaa()
Dim dbs As Database
Dim td As TableDef
Dim rst As Recordset
Set dbs = CurrentDb()
For Each td In dbs.TableDefs
If td.Attributes = 0 Then
Set rst = dbs.OpenRecordset(td.Name)
rst.Field(0).Name = "月份"
rst.Field(1).Name = "销量"
rst.Field(2).Name = "单价"
rst.Field(3).Name = "总价"
rst.Field(4).Name = "备注"
rst.Close
End If
Next td
dbs.Close
End Sub
Sub aaa()
Dim dbs As Database
Dim td As TableDef
Dim rst As Recordset
Set dbs = CurrentDb()
For Each td In dbs.TableDefs
If td.Attributes = 0 Then
Set rst = dbs.OpenRecordset(td.Name)
rst.Field(0).Name = "月份"
rst.Field(1).Name = "销量"
rst.Field(2).Name = "单价"
rst.Field(3).Name = "总价"
rst.Field(4).Name = "备注"
rst.Close
End If
Next td
dbs.Close
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询