ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

VBA数据库解决方案 第二十五讲   工作表中提供的数据在数据表中批量删除

2026/10/3 17:00:20 拓冰建站 浏览量
VBA数据库解决方案 第二十五讲    工作表中提供的数据在数据表中批量删除 《VBA数据库解决方案》教程版权10090845是我推出的第二套教程目前已经是第二版修订了。这套教程定位于中级是学完字典后的另一个专题讲解。数据库是数据处理的利器教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。这套教程共两册八十四讲今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是VBA数据库解决方案第二十五讲 工作表中提供的数据在数据表中批量删除【分享成果随喜正能量】一个人最大的靠山从不什么权势和背景。而是丰富的知识稳定的情绪和可控的生活。第二十五讲 工作表中提供的数据在数据表中批量删除大家好,我们今日继续讲解VBA数据库解决方案的第25讲内容利用VBA把工作表中提供的数据在数据表中批量删除的方法。在上一讲中我们讲了实现在数据表中删除记录的一般方法这种方法可以对重复的数据进行处理,但实际的情况是,我们的数据记录很多时候是没有重复的,而且如果数据量很大该怎么处理呢?今日我们就讲解如何在记录集中批量删除给定记录的方法。1 应用场景的具体分析实例:我们有一个员工的信息表,导出的数据如下:在工作实际中我们需要删除其中的100013,100024,的记录,当然还可以更多,如下表格是需要在数据库中删除的数据信息:也就是说我们要删除的数据中是以员工编号为索引的记录,这个时候需要如何处理代码该如何写呢如果仍采用上讲的办法也是可以的但今天我们将介绍一种新的方法。就是批量删除。2 根据工作表数据批量删除数据表记录的代码及代码解读代码如下Sub mynz_25() 第25讲 利用VBA把工作表中提供的数据在数据表中批量删除的方法Dim cnADO As Object, rsADO As ObjectDim strPath As String, strTable As String, strWhere As String, strSQL As String, strMsg As StringSet cnADO CreateObject(ADODB.Connection)Set rsADO CreateObject(ADODB.Recordset)strPath ThisWorkbook.Path \mydata2.accdbstrTable 员工信息cnADO.Open ProviderMicrosoft.Ace.OLEDB.12.0;Data Source strPathstrSQL SELECT * FROM strTablersADO.Open strSQL, cnADO, 1, 3汇报给用户记录数MsgBox 删除前记录数为 rsADO.RecordCountrsADO.ClosestrWhere WHERE EXISTS( _ SELECT * FROM [Excel 12.0;Database _ ThisWorkbook.FullName ].[ ActiveSheet.Name $ _ Range(a1).CurrentRegion.Address(0, 0) ] _ WHERE 员工编号 strTable .员工编号)strSQL SELECT 员工编号 FROM strTable strWherersADO.Open strSQL, cnADO, 1, 3If rsADO.RecordCount 0 ThenstrSQL DELETE FROM strTable strWherecnADO.Execute strSQLMsgBox rsADO.RecordCount 条记录被删除。, vbInformation, 提示ElseMsgBox 没有发现需要删除的记录。, vbInformation, 提示End IfrsADO.ClosestrSQL SELECT * FROM strTablersADO.Open strSQL, cnADO, 1, 3汇报给用户记录数MsgBox 删除后记录数为 rsADO.RecordCount释放内存rsADO.ClosecnADO.CloseSet rsADO NothingSet cnADO NothingEnd Sub代码截图代码解读1Dim cnADO As Object, rsADO As ObjectDim strPath As String, strTable As String, strWhere As String, strSQL As String, strMsg As StringSet cnADO CreateObject(ADODB.Connection)Set rsADO CreateObject(ADODB.Recordset)strPath ThisWorkbook.Path \mydata2.accdbstrTable 员工信息cnADO.Open ProviderMicrosoft.Ace.OLEDB.12.0;Data Source strPathstrSQL SELECT * FROM strTablersADO.Open strSQL, cnADO, 1, 3汇报给用户记录数MsgBox 删除前记录数为 rsADO.RecordCountrsADO.Close在上述的代码中我们用的是后期绑定的方法建立了ADO连接并且汇报当前的记录数2strWhere WHERE EXISTS( _ SELECT * FROM [Excel 12.0;Database _ ThisWorkbook.FullName ].[ ActiveSheet.Name $ _ Range(a1).CurrentRegion.Address(0, 0) ] _ WHERE 员工编号 strTable .员工编号)strSQL SELECT 员工编号 FROM strTable strWherersADO.Open strSQL, cnADO, 1, 3If rsADO.RecordCount 0 ThenstrSQL DELETE FROM strTable strWherecnADO.Execute strSQLMsgBox rsADO.RecordCount 条记录被删除。, vbInformation, 提示ElseMsgBox 没有发现需要删除的记录。, vbInformation, 提示End IfrsADO.Close上述代码用了一个WHERE语句把EXCEL工作表和数据表进行了连接并打开了符合要求的记录集。关于EXCEL的连接方式在这本书中有介绍这里不再多说打开记录后仍旧用DELETE的方法进行删除之后弹出对话框告诉用户删除的数量。下面我们看运行情况上述代码在执行过程中首先会提示删除数据前的记录数然后提供删除记录的信息最后提供删除后的记录提示为了验证数据我们需要再次显示记录数点击显示记录即可在一般的情况下实际工作中我们需要先点击总记录数然后选择把需要保留的记录删除留下需要删除的记录最后点击删除运行按钮即可。今日内容回向1 如何批量删除数据表中的数据2 如何连接EXCEL的工作表?本讲内容参考程序文件VBA与数据库操作第一册.xlsm我20多年的VBA实践经验全部浓缩在下面的各个教程中