欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 使用excel 制作数据库的数据浏览器

使用excel 制作数据库的数据浏览器

2025/4/21 15:54:37 来源:https://blog.csdn.net/chenchihwen/article/details/147240360  浏览:    关键词:使用excel 制作数据库的数据浏览器

https://download.csdn.net/download/chenchihwen/90621615https://download.csdn.net/download/chenchihwen/90621615

业务场景

这个代码适用于需要定期从 MySQL 数据库中获取数据并导入到 Excel 进行分析和处理的场景。例如,财务人员需要从数据库中提取财务数据,或者业务人员需要获取销售数据等。通过在 “SQL” 工作表中编写不同的 SQL 查询语句,可以灵活地获取不同的数据,而代码会自动将查询结果导入到 Excel 中,方便进一步的分析和报表制作。

为了让用户比较方便的组织出正确的 sql

在SQL 页面布置了 简单的 SQL 筛选语句, 通过 【B4】的内容 与 E3: G9 的内容 写出 SQL

  1. 数据筛选与查询语句生成:提到 “筛选多少数据 TOP 10 放 10 先少量捞,取消捞全部” ,说明有数据筛选的需求,最开始计划先筛选出 10 条数据进行处理,后续可能会取消限制获取全部数据。=CONCATENATE("SELECT"," * FROM ",B12,IF(G3="","",IF(UPPER(H3)="X"," WHERE "&E3&F3&G3," WHERE "&E3&F3&"'"&G3&"'")),IF(G4="","",IF(UPPER(H4)="X"," AND "&E4&F4&G4," AND "&E4&F4&"'"&G4&"'")),,IF(G5="","",IF(UPPER(H5)="X"," AND "&E5&F5&G5," AND "&E5&F5&"'"&G5&"'")),IF(G6="","",IF(UPPER(H6)="X"," AND "&E6&F6&G6," AND "&E6&F6&"'"&G6&"'")),IF(G11>0," Limit "&G11," ;")) 这一长串公式是在动态生成 SQL 查询语句。根据不同单元格(如 G3、H3、E3 等)的值来决定是否添加 WHERE 条件以及具体的条件内容,并且根据 G11 的值决定是否添加 LIMIT 子句来限制查询结果的数量。

【B4】 格内容是个下拉字段是 数据验证

 

code = 

当点击 数据更新时,会根据 SQL 的内容 通过 ODBC 获取 数据内容,并存放在 RAW sheet 中

VBA 的源码如下

Sub SQLCC()'Dim SQL As StringApplication.ScreenUpdating = FalseSheets("SQL").Visible = TrueCells(1, 7) = Now()Sheets("SQL").SelectSQL = Range("B13").ValueSheets("Raw").SelectCells.SelectSelection.ClearContentsWith ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _"ODBC;dsn=ECS;database=ecs_fssc;Server=10.153.36.4;port=3306;UID=userID;PASSWORD=yourpassword;" _, Destination:=Range("$A$1")).QueryTable.CommandType = xlCmdSql.CommandText = Array(SQL).RowNumbers = False.FillAdjacentFormulas = False.PreserveFormatting = True.RefreshOnFileOpen = False.BackgroundQuery = True.RefreshStyle = xlInsertDeleteCells.SaveData = True.AdjustColumnWidth = False.RefreshPeriod = 0.PreserveColumnInfo = True.ListObject.DisplayName = "Query5".Refresh BackgroundQuery:=FalseEnd WithSheets("Raw").Cells.EntireColumn.AutoFitEnd Sub

整体功能概述

这段 VBA 代码 SQLCC 的主要功能是从指定的 MySQL 数据库中执行 SQL 查询,并将查询结果导入到 Excel 的 “Raw” 工作表中,最后自动调整 “Raw” 工作表的列宽以适应数据。代码通过读取 “SQL” 工作表中的 SQL 查询语句,使用 ODBC 连接到数据库,执行查询并将结果填充到 “Raw” 工作表,同时对查询表的一些属性进行了设置。

代码分段解释

1. 变量声明与屏幕更新设置

vba

Dim SQL As String
Application.ScreenUpdating = False

  • Dim SQL As String:声明一个字符串类型的变量 SQL,用于存储从工作表中读取的 SQL 查询语句。
  • Application.ScreenUpdating = False:关闭 Excel 的屏幕更新功能,这样在代码执行过程中,Excel 界面不会实时刷新,从而提高代码的执行效率。
2. 显示工作表并记录时间

vba

Sheets("SQL").Visible = True
Cells(1, 7) = Now()
Sheets("SQL").Select
SQL = Range("B13").Value

  • Sheets("SQL").Visible = True:将名为 “SQL” 的工作表设置为可见状态。
  • Cells(1, 7) = Now():在当前活动工作表的第 1 行第 7 列(即 G1 单元格)记录当前的日期和时间。
  • Sheets("SQL").Select:选中 “SQL” 工作表。
  • SQL = Range("B13").Value:从 “SQL” 工作表的 B13 单元格中读取 SQL 查询语句,并将其赋值给变量 SQL
3. 清空 “Raw” 工作表内容

vba

Sheets("Raw").Select
Cells.Select
Selection.ClearContents

  • Sheets("Raw").Select:选中名为 “Raw” 的工作表。
  • Cells.Select:选中 “Raw” 工作表中的所有单元格。
  • Selection.ClearContents:清空选中单元格的内容,为导入新的查询结果做准备。
4. 创建并配置查询表

vba

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _"ODBC;dsn=ECS;database=ecs_fssc;Server=10.153.36.4;port=3306;UID=ecs_fssc;PASSWORD=yuanian@123;" _, Destination:=Range("$A$1")).QueryTable.CommandType = xlCmdSql.CommandText = Array(SQL).RowNumbers = False.FillAdjacentFormulas = False.PreserveFormatting = True.RefreshOnFileOpen = False.BackgroundQuery = True.RefreshStyle = xlInsertDeleteCells.SaveData = True.AdjustColumnWidth = False.RefreshPeriod = 0.PreserveColumnInfo = True.ListObject.DisplayName = "Query5".Refresh BackgroundQuery:=False
End With

  • ActiveSheet.ListObjects.Add(...):在当前活动工作表(即 “Raw” 工作表)中添加一个新的查询表。
    • SourceType:=0:表示数据源类型为 ODBC 数据源。
    • Source:指定 ODBC 连接字符串,包含数据库的相关信息,如数据源名称(dsn=ECS)、数据库名(database=ecs_fssc)、服务器地址(Server=10.153.36.4)、端口号(port=3306)、用户名(UID=ecs_fssc)和密码(PASSWORD=yuanian@123)。
    • Destination:=Range("$A$1"):指定查询结果的起始位置为 “Raw” 工作表的 A1 单元格。
  • .CommandType = xlCmdSql:设置查询类型为 SQL 查询。
  • .CommandText = Array(SQL):将之前读取的 SQL 查询语句赋值给查询表的命令文本。
  • 后续一系列属性设置:
    • RowNumbers = False:不显示行号。
    • FillAdjacentFormulas = False:不自动填充相邻的公式。
    • PreserveFormatting = True:保留单元格的格式。
    • RefreshOnFileOpen = False:在打开文件时不自动刷新查询。
    • BackgroundQuery = True:允许在后台进行查询刷新。
    • RefreshStyle = xlInsertDeleteCells:刷新时插入或删除单元格以适应数据变化。
    • SaveData = True:保存查询结果数据。
    • AdjustColumnWidth = False:不自动调整列宽。
    • RefreshPeriod = 0:不设置自动刷新周期。
    • PreserveColumnInfo = True:保留列的信息。
    • .ListObject.DisplayName = "Query5":将查询表的显示名称设置为 “Query5”。
  • .Refresh BackgroundQuery:=False:立即刷新查询,不使用后台查询方式。
5. 自动调整列宽

vba

Sheets("Raw").Cells.EntireColumn.AutoFit

  • 选中 “Raw” 工作表中的所有单元格,并自动调整各列的宽度,使其适应列中的内容。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词