Microsoft VBA Excel Access 核对数据

Excel VBA开发基本语句说明 阅读详情

问题描述

简述:
有2份文件,分别是Summary.xlsm和Output.MDB。需要在Summary.xlsm写个VBA。内容是:
提取全部Summary.xlsm中sheet的名称,如果sheet的名称,在Output.MDB中找到资料表的名称是字符串"Fruit - "加上对应sheet名称,它们两个内容是不一样的,则输出弹窗(所有sheet的名称),如果一致则输出弹窗(“Well Done!”)。


代码描述

  1. 循环遍历 Summary.xlsm 中的所有工作表。
  2. 对于每个工作表,构造 Output.MDB 中的表名(即 "Fruit - " 加上工作表名称)。
  3. 打开 Output.MDB 数据库,检查表是否存在,并对其进行比较。比较内容是sheet中第三行开始,A-G列的全部有值单元格和Access中的资料表对应单元格。
  4. 如果存在任何不一致,记录下来并最后显示一个包含所有不一致名称的弹窗。
  5. 如果全部一致,则显示弹窗,显示 "Well Done!"。
Sub CompareSheetsWithDatabaseTables()
    Dim ws As Worksheet
    Dim sheetName As String
    Dim tableName As String
    Dim conn As Object
    Dim rst As Object
    Dim sql As String
    Dim col As Integer
    Dim row As Integer
    Dim excelValue As String
    Dim dbValue As String
    Dim isWellDone As Boolean
    Dim dbName As String
    Dim mismatchList As String

    dbName = ThisWorkbook.Path & "\Output.MDB" ' 指定数据库文件路径
    mismatchList = ""
    isWellDone = True

    ' 设置数据库连接字符串
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbName
    
    For Each ws In ThisWorkbook.Sheets
        sheetName = ws.Name
        tableName = "Fruit - " & sheetName
        
        ' 检查表是否存在
        sql = "SELECT TOP 1 * FROM [" & tableName & "]"
        Set rst = CreateObject("ADODB.Recordset")

        On Error Resume Next
        rst.Open sql, conn, 1, 1 ' 1, 1 = adOpenKeyset, adLockReadOnly
        If Err.Number <> 0 Then
            ' 表不存在或无法打开
            isWellDone = False
            mismatchList = mismatchList & tableName & " (Table not found or cannot open)" & vbNewLine
            Err.Clear
        Else
            On Error GoTo 0
            ' 逐行逐列进行比较
            For row = 3 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
                For col = 1 To 7 ' A到G列
                    excelValue = ws.Cells(row, col).Value
                    dbValue = rst.Fields(col - 1).Value ' 记录集字段索引从 0 开始
                    
                    ' 如果 Excel 单元格有值,则比较
                    If Not IsEmpty(excelValue) Then
                        If excelValue <> dbValue Then
                            ' 内容不一致
                            isWellDone = False
                            mismatchList = mismatchList & tableName & " (Mismatch in Cell " & ws.Cells(row, col).Address & ")" & vbNewLine
                            Exit For ' 跳出循环,继续检查下一张表
                        End If
                    End If
                Next col
                If Not isWellDone Then Exit For ' 如果已经有不一致,跳出行循环
                rst.MoveNext ' 移动到下一条记录
                If rst.EOF Then Exit For ' 如果记录集结束,跳出行循环
            Next row
        End If
        rst.Close
    Next ws
    
    conn.Close
    
    ' 展示结果
    If isWellDone Then
        MsgBox "Well Done!", vbInformation
    Else
        MsgBox "The following mismatches were found:" & vbNewLine & mismatchList, vbCritical
    End If
End Sub

注意

  • 需要引用适当的 ActiveX 数据对象库。在 VBA 编辑器中,通过 “工具” -> “引用…”,然后选择 “Microsoft ActiveX Data Objects X.X Library”。
  • 在比较之前,上面的代码假定 Excel 工作表和 Access 表中的行数是一致的。如果行数不一致,需要添加额外的逻辑来处理这种情况。
  • 在实际应用中,如果数据库较大或者表很多,上述代码可能运行较慢。
  • 错误处理在这个脚本中很基本,仅用于继续执行循环。根据实际需要,可能要添加更复杂的错误处理机制。
  • 确保将 dbName 设置为正确的 Output.MDB 文件路径。
  • 由于 Access SQL 查询不区分大小写,而 VBA 比较默认是区分大小写的,这可能会影响比较结果。如果需要,可以使用 StrComp 函数来进行不区分大小写的比较。
VBA编程之ODBC连接数据库 下面的例子展示了在VBA中使用ODBC连接数据库并获取数据,填充工作表内容。 使用前要先在sheet名字上点右键,选择查看代码,进入VBA编辑模式: 第一次用的时候要在VBA编辑窗口点击工具–引用,勾选:Microsoft ActiveX Data Objects x.x Library。 然后输入如下代码,即可对Excel的“名字”工作表按SQL Server中的test数据库中的user表数据进行填充。 数据库可一用SQL Server,也可以用MySQL,但是使用之前,要先运行"odbcad32" 阅读详情

相关推荐

SeleniumBasic入门:在Excel中用VBA实现网页自动化与数据抓取

网页自动化是提升工作效率的关键技术,它通过模拟用户操作实现浏览器自动控制。其核心原理基于浏览器驱动协议,允许外部程序与网页元素进行交互。这项技术的价值在于将人力从重复性劳动中解放,实现数据采集、流程测试等任务的自动化。在金融、行政、数据分析等场景中,自动化能显著减少人工错误并提升处理速度。SeleniumBasic作为VBA环境下的自动化库,特别适合Office用户,无需切换编程环境即可实现强大的网页操控。通过元素定位、数据交互等核心操作,用户可以直接在Excel中完成数据抓取与处理,形成无缝工作流。本文以

a1311010193的博客 449

Excel vba 如何使用sql语句

Excel VBA 可以通过 ADODB 对象库来使用 SQL 语句。 首先,需要在 VBA 编辑器中打开“工具”菜单,选择“引用”并勾选“Microsoft ActiveX Data Objects x.x Library”(x.x 为版本号,通常为最新版本)。 接下来,可以使用 ADODB 对象来连接数据库、执行 SQL 查询、更新数据库等操作。下面是一个示例代码,演示如何使用 SQL 查询获...

weixin_42602368的博客 1987

AI+VBA 30分钟打造Excel数据自动化处理系统

数据自动化处理是现代办公效率提升的核心技术,其原理在于通过程序化手段替代人工重复操作,实现数据的自动清洗、校验与转换。该技术的核心价值在于将业务人员从繁琐、易错的手动劳动中解放出来,显著提升数据处理的准确性与一致性,并降低人力成本。在应用场景上,尤其适用于企业内高频、规则明确的报表整理、人员信息录入、客户数据清洗等办公自动化任务。本文聚焦于利用VBA与AI大模型的组合优势,快速构建定制化数据处理流水线。VBA作为原生嵌入Office的脚本语言,能无缝操作Excel文件,执行具体的读写与流程控制;而AI大模型

weixin_30847865的博客 327

vba 打开其他excel 并写入数据_如何将 Excel 的数据写入到 Accees?

如何将 Excel 的数据写入到 Accees?Aceess 是微软出品的桌面关系型数据库,也是在 Office 大礼包中的套件之一,和大名鼎鼎的 Excel 不同;Access 主要承担了数据存储和 SQL 查询的功能,需要的数据技能要更为结构化与进阶;总体来说,Excel 的强项在于灵活的分析数据,它的基本对象的单元格Cell;而 Access 的基本对象是Record,是一种结构化的数据形式...

weixin_39889642的博客 2428

Office 365 Excel VBA实战:从零构建自动化工具与应收账款系统

在数据处理与办公自动化领域,编程语言是实现效率飞跃的关键。VBA(Visual Basic for Applications)作为深度集成于微软Office套件的原生语言,其核心原理在于通过对象模型直接操控Excel等应用组件,实现无需外部环境的即时响应。这一技术价值在于将重复性手动操作转化为可复用的自动化流程,显著提升数据处理准确性与工作效率。其典型应用场景包括批量文件处理、数据有效性保护以及简易业务系统搭建。本文聚焦于Office 365环境,通过实战案例详解如何利用VBA构建一个具备客户信息联动、余额

weixin_34151004的博客 360

VB/VBA自动化新选择:SeleniumBasic实现网页操控与数据抓取

浏览器自动化是提升办公效率的关键技术,其核心原理是通过程序模拟用户操作,控制浏览器执行网页导航、表单填写、数据提取等任务。在VB/VBA开发环境中,SeleniumBasic作为Selenium WebDriver的COM封装库,为传统Office自动化项目赋予了处理现代Web应用的能力。它通过封装丰富的API,支持元素定位、等待机制、JavaScript执行等核心功能,使得开发者无需学习新语言即可实现高效的网页交互自动化。这一技术特别适用于企业内部基于Excel、Access等Office套件的数据处理流

weixin_33713503的博客 464

Excel VBA自动化办公:30天从零到实战,告别重复劳动

在数据处理与办公自动化领域,编程已成为提升效率的核心技能。其基本原理是通过编写指令集,让计算机自动执行重复性任务,从而将人力从繁琐操作中解放出来,聚焦于更高价值的分析与决策。这一技术价值在数据处理、报表生成等场景中尤为突出。以Excel VBA为例,它内置于Office软件中,通过操控对象模型,能实现数据汇总、批量处理等复杂操作的自动化。本文聚焦于【VBA编程】与【办公自动化】,通过30天学习路径,手把手教你从环境搭建、核心语法到实战应用,最终掌握编写脚本解决工作中99%重复性任务的能力,实现从“表格民工”

cigang4063的博客 395

Excel Copilot原生翻译与汇率换算实战指南

Excel Copilot 是微软深度集成AI能力的智能协作者,基于Office.js运行时与Microsoft Graph API构建,实现翻译与汇率换算的原生化、安全化、可审计化。其核心原理在于将自然语言指令解析为结构化API调用,依托Azure Translator和Financial Data API完成多语言处理与可信金融数据获取,并通过最小权限模型保障企业合规。技术价值体现在消除VBA/Power Query脚本依赖、规避宏安全警告、支持实时汇率缓存与精度控制,适用于跨境财务报表、多语种采购清单

clt3617的博客 364

Excel VBA学习指南:从核心语法到实战案例的系统化教程

Excel VBA作为Office自动化的重要工具,其核心在于理解对象模型与事件驱动机制。通过掌握Application、Workbook、Worksheet、Range等核心对象的层次关系,开发者可以实现对Excel的深度控制,从而将重复性操作转化为自动化脚本。在数据处理领域,VBA的价值尤为突出,它能够高效完成批量处理、数据清洗、报表生成等任务,显著提升工作效率。无论是财务分析、行政办公还是科研数据处理,VBA都能提供灵活的解决方案。本文围绕Excel VBA学习合集,重点解析了环境配置、核心语法、对象

weixin_33782386的博客 503

2026最新Excel数据分析免费教程:从零基础到精通,掌握函数与透视表

Excel作为数据处理与分析的基础工具,其核心价值在于通过函数与数据透视表实现高效的数据汇总与可视化分析。函数公式如SUMIFS、VLOOKUP等,能够实现多条件筛选与数据关联,而数据透视表则通过拖拽操作快速生成动态报表,大幅提升分析效率。这些技术广泛应用于销售统计、库存管理、财务报表等业务场景,是职场人士必备的数据处理技能。本教程针对excel多条件筛选、数据透视表等高频需求,提供从基础操作到实战项目的系统学习路径,帮助用户掌握Excel导入数据库、批量处理等实用技巧,构建扎实的数据分析基础。

weixin_30727835的博客 463

Excel多行冻结窗格原理与避坑指南

Excel冻结窗格并非简单锁定表头,而是在指定坐标处划定不可滚动的视觉边界,其本质是基于单元格坐标的分界线机制。理解‘冻结第N行需选中第N+1行’这一底层逻辑,可避免81%的实操失误;结合多级表头、跨部门协作、打印标题等高频需求,该功能直接关系到数据可读性、防错性与报表专业度。本文深入解析冻结机制、三端差异、12类致命陷阱及秒级修复方案,覆盖财务、HR、审计等典型业务场景,助力用户构建稳定可靠的Excel工作纪律。

weixin_34301132的博客 579

VBA随学随用系列:进口关税电子发票管理工具 - 总纲

前言 VBA是微软office系列软件内置的,自带输入输出的界面(想像一下Excel表), 所以用于解决日常工作中的问题就非常顺手。而且VBA语法简单,容易上手。只要有一点点基本编程知识就够了,可以边学边用。本文从一个具体的案列开始,讲解VBA的功能。因为相对复杂,所以拆解成若干篇。 本系列的目标读者是工作中的Power User, 他(她) 只需要具有少量编程概念,甚至没有也行。 背景介绍 在2018年之前,海关进口报关后取得的关税发票都是纸质的。因为公司进口业务量较大,所以有专门的团队处理进口关税发票。

m0_54284125的博客 923

Excel切片器实战:打造交互式动态筛选报表

切片器(Slicer)是Excel内置的可视化筛选控件,本质是一种基于数据模型的状态式过滤机制,通过绑定数据透视表或结构化表格,实现多视图联动、实时刷新与零代码交互。其核心原理在于维护统一的筛选上下文(Filter Context),使一次操作同步影响多个图表和汇总表,显著提升自助分析效率。相比传统下拉筛选,切片器具备状态可见、跨表联动、支持复杂组合等技术优势,广泛应用于销售分析、财务看板、HR人力仪表盘等需要快速钻取与业务人员自主查询的场景。本文聚焦Excel Slicer与数据透视表的深度协同,详解插入

weixin_30521161的博客 400

AI+VBA全自动人员信息录入系统:30分钟搭建智能办公自动化工具

办公自动化是提升企业效率的关键技术,其核心在于通过编程手段替代重复性手动操作。VBA(Visual Basic for Applications)作为内置于Microsoft Office的编程语言,长期以来是实现Excel、Word等办公软件自动化的经典方案,能够直接操控对象模型完成数据读写、格式调整等任务。然而,传统VBA在处理非结构化、格式混乱的数据时存在局限,缺乏语义理解能力。随着人工智能技术的发展,大语言模型(LLM)为自动化注入了智能解析与决策能力,能够理解自然语言文本、提取结构化信息并纠正错误

weixin_30732487的博客 336

ADO数据库编程中文参考手册详解

本文还有配套的精品资源,点击获取 简介:ADO是一种由Microsoft开发的数据访问技术,广泛应用于Windows平台,以实现与多种数据库系统的交互。本手册详细介绍了ADO的核心概念、主要组件以及数据库编程的详细步骤和高级特性。手册内容包括Connection、Command、Recordset等对象的使用方法,以及如何在VB6、VBA等环境中执行高效的数据操作。此外,还...

weixin_42418754的博客 2701

Access 2021数据库程序开发:从建库、SQL到VBA自动化与故障排除

数据库管理系统是数据存储与业务逻辑的底层支撑,尤其在单机环境或课程设计中,轻量级工具往往比大型数据库更务实。Access 2021作为桌面级数据库,凭借免装服务器、与Excel协同、图形化查询设计等特性,成为连接Excel严谨性与SQL Server专业性的中间选择。其核心原理围绕表、查询、窗体、报表、宏与模块六个对象展开,通过SQL方言实现数据检索,借助VBA自动化完成事务处理与校验。参数化查询的引入有效抵御注入风险,而分区拆库、性能调优等工程实践则保障了数据量增长后的稳定性。无论是订单录入、库存扣减还是

weixin_33898876的博客 461

教材教辅库存管理系统 · 设计方案

书目对不上号。同一个年级,英语班和俄语班的教材不同;高一和高三用书不同;高二高三还要按"物化生/物化政/物化地/史地政"四种选科组合发不同的教辅。靠 Excel 手工比对,一次错发就要全校重算。该收多少书费算不清。初中教材免费、教辅收费;高中教材教辅都收费;建档立卡学生全免。同一个班里三类学生混在一起,手工算费极易出错,也说不清钱是怎么算出来的。库存是笔糊涂账。进了多少、发了多少、教师领了多少、还剩多少,全靠翻单据。等到要补订时才发现某个年级的册子已经不够了。班主任交上来的名单格式五花八门。

复行数十步 158

基于yolov5的鸟类图像准确识别

本项目主要基于yolov5进行鸟类准确识别,主要识别白鹭家族,红脚鹬,反嘴鹬,环颈珩,小白鹭以及夜鹭六类鸟

weixin_46064184的博客 3823

Python自动化处理Excel:从合并报表到定时推送的实战指南

在数据量激增、表格操作重复繁琐的日常办公中,Excel仍是最普及的数据载体,但手动合并、格式调整、跨表统计正成为效率瓶颈。Python作为通用编程语言,凭借丰富的第三方库生态,为Excel自动化提供了高效、可复用的解决方案。核心思路是先理解数据处理管道:读取、清洗、聚合、输出;再借助pandas完成数据合并与计算,用openpyxl精确控制样式,并通过脚本实现定时任务与钉钉机器人消息推送。这种技术不仅适用于财务汇总、销售日报、多部门数据归并等典型办公场景,也适合批量数据清洗与格式标准化。从环境搭建到踩坑排查

weixin_32050773的博客 304

【深度学习】Progressive Distillation for Fast Sampling of Diffusion Models

这种方法通过迭代地将一个需要较多步骤的模型(称为教师模型)蒸馏成一个需要较少步骤的学生模型,每次迭代都将采样步骤减半,直到达到所需的采样步骤数量。通过渐进式蒸馏,论文将原始需要8192步采样的模型成功蒸馏为只需4步采样就能取得接近的生成质量的新模型,大幅提高了扩散模型的推理效率。这篇论文提出了一种"渐进式蒸馏"(Progressive Distillation)的方法,来大幅降低用于生成对抗网络(GAN)的扩散模型(Diffusion Model)在推理阶段的采样步数,从而提高其推理效率。

q742971636的博客 1789

车载ECU底软测试:方法与技术的深度解析

底软是运行在 ECU 硬件平台上的基础软件,它为上层应用程序提供了硬件驱动、操作系统服务、通信协议栈等功能。底软的主要功能包括:硬件驱动:负责与 ECU 的各种硬件外设进行通信和控制,如 GPIO、UART、SPI、CAN 等。操作系统服务:提供任务调度、内存管理、中断处理等功能,确保系统的实时性和稳定性。通信协议栈:实现 ECU 与其他 ECU 或外部设备之间的通信,如 CAN、LIN、FlexRay 等。诊断服务:负责对 ECU 的故障进行诊断和处理,并将故障信息存储在故障码存储器中。

天赐好车的博客 1430
上一篇: Microsoft VBA Excel 得到全部sheet名称
下一篇: Microsoft VBA Excel 读取文件夹文件名
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值