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

发布时间:2026/10/3 16:59:51
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实践经验全部浓缩在下面的各个教程中

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询